diff options
| author | rubenwardy <rw@rubenwardy.com> | 2018-12-22 12:39:35 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-22 12:39:35 +0000 |
| commit | f6384e2e156b190753b8ba5c57e66b6d7304b5a1 (patch) | |
| tree | bd1de64bb9040f540caa45ca4c60288f32961835 /app/templates | |
| parent | c9bf7a32451069c0697c8a18dddad7aa1a2bd8af (diff) | |
| parent | 09a201759bb327a889cf017d5f3c49f8258713c1 (diff) | |
| download | cheatdb-f6384e2e156b190753b8ba5c57e66b6d7304b5a1.tar.xz | |
Merge minetest/bootstrap into master
Diffstat (limited to 'app/templates')
| -rw-r--r-- | app/templates/admin/list.html | 2 | ||||
| -rw-r--r-- | app/templates/base.html | 136 | ||||
| -rw-r--r-- | app/templates/flask_user/login.html | 4 | ||||
| -rw-r--r-- | app/templates/index.html | 15 | ||||
| -rw-r--r-- | app/templates/macros/forms.html | 24 | ||||
| -rw-r--r-- | app/templates/macros/threads.html | 20 | ||||
| -rw-r--r-- | app/templates/macros/topics.html | 2 | ||||
| -rw-r--r-- | app/templates/packages/create_edit.html | 122 | ||||
| -rw-r--r-- | app/templates/packages/delete.html | 2 | ||||
| -rw-r--r-- | app/templates/packages/list.html | 27 | ||||
| -rw-r--r-- | app/templates/packages/view.html | 601 | ||||
| -rw-r--r-- | app/templates/users/claim.html | 4 | ||||
| -rw-r--r-- | app/templates/users/user_profile_page.html | 137 |
13 files changed, 570 insertions, 526 deletions
diff --git a/app/templates/admin/list.html b/app/templates/admin/list.html index a2ac6d5..1b7063d 100644 --- a/app/templates/admin/list.html +++ b/app/templates/admin/list.html @@ -20,7 +20,7 @@ <select name="action"> <option value="importmodlist" selected>Import forum topics</option> <option value="recalcscores">Recalculate package scores</option> - <!-- <option value="importscreenshots">Import screenshots from VCS</option> --> + <option value="importscreenshots">Import screenshots from VCS</option> <!-- <option value="importdepends">Import dependencies from downloads</option> --> <!-- <option value="modprovides">Set provides to mod name</option> --> <!-- <option value="vcsrelease">Create VCS releases</option> --> diff --git a/app/templates/base.html b/app/templates/base.html index 35a2ac6..b49b47d 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -6,75 +6,87 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>{% block title %}title{% endblock %} - {{ config.USER_APP_NAME }}</title> - <link rel="stylesheet" type="text/css" href="/static/main.css"> + <link rel="stylesheet" type="text/css" href="/static/bootstrap.css"> + <link rel="stylesheet" type="text/css" href="/static/custom.css"> {% block headextra %}{% endblock %} </head> <body> - <nav> + <nav class="navbar navbar-expand-lg navbar-dark bg-primary"> <div class="container"> - <ul class="nav navbar-nav navbar-left"> - <li><a href="/">{{ config.USER_APP_NAME }}</a></li> - {% for item in current_menu.children recursive %} - {% if item.visible %} - <li{% if item.children %} class="dropdown"{% endif %}> - <a href="{{ item.url }}" + <a class="navbar-brand" href="/">{{ config.USER_APP_NAME }}</a> + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div class="collapse navbar-collapse" id="navbarColor01"> + <ul class="navbar-nav mr-auto"> + {% for item in current_menu.children recursive %} + {% if item.visible %} + <li class="nav-item {% if item.children %} dropdown{% endif %}"> + <a class="nav-link" href="{{ item.url }}" + {% if item.children %} + class="dropdown-toggle" + data-toggle="dropdown" + role="button" + aria-expanded="false" + {% endif %}> + {{ item.text }} {% if item.children %} - class="dropdown-toggle" - data-toggle="dropdown" - role="button" - aria-expanded="false" - {% endif %}> - {{ item.text }} + <span class="caret"></span> + {% endif %} + </a> {% if item.children %} - <span class="caret"></span> + <ul class="dropdown-menu" role="menu"> + {{ loop(item.children) }} + </ul> {% endif %} - </a> - {% if item.children %} + </li> + {% endif %} + {% endfor %} + </ul> + <form class="form-inline my-2 my-lg-0" method="GET" action="/packages/"> + {% if type %}<input type="hidden" name="type" value="{{ type }}" />{% endif %} + <input class="form-control mr-sm-2" name="q" type="text" placeholder="Search {{ title | lower or 'all packages' }}" value="{{ query or ''}}"> + <input class="btn btn-secondary my-2 my-sm-0 mr-sm-2" type="submit" value="Search" /> + <input class="btn btn-primary my-2 my-sm-0" type="submit" name="lucky" value="Lucky" /> + </form> + <ul class="navbar-nav ml-auto"> + {% if current_user.is_authenticated %} + <li class="nav-item"><a class="nav-link" href="{{ url_for('notifications_page') }}"> + <img src="/static/notification{% if current_user.notifications %}_alert{% endif %}.svg" /> + </a></li> + <li class="nav-item"><a class="nav-link" href="{{ url_for('create_edit_package_page') }}">+</a></li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" + data-toggle="dropdown" + role="button" + aria-expanded="false">{{ current_user.display_name }} + <span class="caret"></span></a> + <ul class="dropdown-menu" role="menu"> - {{ loop(item.children) }} + <li class="nav-item"> + <a class="nav-link" href="{{ url_for('user_profile_page', username=current_user.username) }}">Profile</a> + </li class="nav-item"> + {% if current_user.canAccessTodoList() %} + <li class="nav-item"><a class="nav-link" href="{{ url_for('todo_page') }}">Work Queue</a></li> + <li class="nav-item"><a class="nav-link" href="{{ url_for('user_list_page') }}">User list</a></li> + {% endif %} + {% if current_user.rank == current_user.rank.ADMIN %} + <li class="nav-item"><a class="nav-link" href="{{ url_for('admin_page') }}">Admin</a></li> + {% endif %} + {% if current_user.rank == current_user.rank.MODERATOR %} + <li class="nav-item"><a class="nav-link" href="{{ url_for('tag_list_page') }}">Tag Editor</a></li> + <li class="nav-item"><a class="nav-link" href="{{ url_for('license_list_page') }}">License Editor</a></li> + {% endif %} + <li class="nav-item"><a class="nav-link" href="{{ url_for('user.logout') }}">Sign out</a></li> </ul> - {% endif %} </li> + {% else %} + <li><a class="nav-link" href="{{ url_for('user.login') }}">Sign in</a></li> {% endif %} - {% endfor %} - </ul> - <ul class="nav navbar-nav navbar-right"> - {% if current_user.is_authenticated %} - <li><a href="{{ url_for('notifications_page') }}"> - <img src="/static/notification{% if current_user.notifications %}_alert{% endif %}.svg" /> - </a></li> - <li><a href="{{ url_for('create_edit_package_page') }}">+</a></li> - <li class="dropdown"> - <a class="dropdown-toggle" - data-toggle="dropdown" - role="button" - aria-expanded="false">{{ current_user.display_name }} - <span class="caret"></span></a> - - <ul class="dropdown-menu" role="menu"> - <li> - <a href="{{ url_for('user_profile_page', username=current_user.username) }}">Profile</a> - </li> - {% if current_user.canAccessTodoList() %} - <li><a href="{{ url_for('todo_page') }}">Work Queue</a></li> - <li><a href="{{ url_for('user_list_page') }}">User list</a></li> - {% endif %} - {% if current_user.rank == current_user.rank.ADMIN %} - <li><a href="{{ url_for('admin_page') }}">Admin</a></li> - {% endif %} - {% if current_user.rank == current_user.rank.MODERATOR %} - <li><a href="{{ url_for('tag_list_page') }}">Tag Editor</a></li> - <li><a href="{{ url_for('license_list_page') }}">License Editor</a></li> - {% endif %} - <li><a href="{{ url_for('user.logout') }}">Sign out</a></li> - </ul> - </li> - {% else %} - <li><a href="{{ url_for('user.login') }}">Sign in</a></li> - {% endif %} - </ul> - <div class="clearboth"></div> + </ul> + </div> </div> </nav> @@ -97,16 +109,22 @@ {% endblock %} {% block container %} - <main> + <main class="container mt-4"> {% block content %} {% endblock %} </main> {% endblock %} - <footer> + <footer class="container footer-copyright my-5 page-footer font-small text-center"> ContentDB © 2018 to <a href="https://rubenwardy.com/">rubenwardy</a> | <a href="https://github.com/minetest/contentdb">GitHub</a> | <a href="{{ url_for('flatpage', path='help') }}">Help</a> | <a href="{{ url_for('flatpage', path='help/reporting') }}">Report / DMCA</a> </footer> + + <script src="/static/jquery.min.js"></script> + <script src="/static/popper.min.js"></script> + <script src="/static/bootstrap.min.js"></script> + {% block scriptextra %}{% endblock %} +</body> </html> diff --git a/app/templates/flask_user/login.html b/app/templates/flask_user/login.html index a758011..73d83c3 100644 --- a/app/templates/flask_user/login.html +++ b/app/templates/flask_user/login.html @@ -61,7 +61,7 @@ Sign in </p> <h3>Sign in with Github</h3> - <p><a class="button" href="{{ url_for('github_signin_page') }}">GitHub</a></p> + <p><a class="btn" href="{{ url_for('github_signin_page') }}">GitHub</a></p> </form> </div> @@ -72,7 +72,7 @@ Sign in <div class="box-body"> <p>Create an account using your forum account or email.</p> - <a href="{{ url_for('user_claim_page') }}" class="button">{%trans%}Claim your account{%endtrans%}</a> + <a href="{{ url_for('user_claim_page') }}" class="btn">{%trans%}Claim your account{%endtrans%}</a> </div> </aside> </div> diff --git a/app/templates/index.html b/app/templates/index.html index 47efd3d..fde897f 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -5,31 +5,26 @@ Welcome {% endblock %} {% block container %} -<header> +<header class="jumbotron"> <div class="container"> - <h1>Content DB</h1> + <h1 class="display-3">{{ config.USER_APP_NAME }}</h1> - <p> + <p class="lead"> Minetest's official content repository. Browse {{ count }} packages, the majority of which are available under a free and open source license. </p> - - <form method="get" action="/packages/"> - <input type="text" name="q" value="{{ query or ''}}" /> - <input type="submit" value="Search" /> - </form> </div> </header> -<main> +<main class="container"> {% from "macros/packagegridtile.html" import render_pkggrid %} <h2>Popular</h2> {{ render_pkggrid(popular) }} - <a href="{{ url_for('packages_page') }}" class="button">Show More</a> + <a href="{{ url_for('packages_page') }}" class="btn">Show More</a> <h2 style="margin-top:2em;">Newly Added</h2> {{ render_pkggrid(new) }} diff --git a/app/templates/macros/forms.html b/app/templates/macros/forms.html index 66f305b..e53beec 100644 --- a/app/templates/macros/forms.html +++ b/app/templates/macros/forms.html @@ -2,7 +2,7 @@ <div class="form-group {% if field.errors %}has-error{% endif %} {{ kwargs.pop('class_', '') }}"> {% if field.type != 'HiddenField' and label_visible %} {% if not label %}{% set label=field.label.text %}{% endif %} - <label for="{{ field.id }}" class="control-label">{{ label|safe }}</label> + <label for="{{ field.id }}">{{ label|safe }}</label> {% endif %} {{ field(class_='form-control', **kwargs) }} {% if field.errors %} @@ -13,9 +13,8 @@ </div> {%- endmacro %} -{% macro form_includes() -%} +{% macro form_scripts() -%} <link href="/static/jquery-ui.min.css" rel="stylesheet" type="text/css"> - <script src="/static/jquery.min.js"></script> <script src="/static/jquery-ui.min.js"></script> <script src="/static/tagselector.js"></script> {% endmacro %} @@ -58,16 +57,17 @@ <div class="form-group {% if field.errors %}has-error{% endif %} {{ kwargs.pop('class_', '') }}"> {% if field.type != 'HiddenField' and label_visible %} {% if not label %}{% set label=field.label.text %}{% endif %} - <label for="{{ field.id }}" class="control-label">{{ label|safe }}</label> + <label for="{{ field.id }}">{{ label|safe }}</label> {% endif %} - <div class="multichoice_selector bulletselector"> + <div class="multichoice_selector bulletselector form-control"> <input type="text" placeholder="Start typing to see suggestions"> <div class="clearboth"></div> </div> + <div class="invalid-remaining invalid-feedback"></div> {{ field(class_='form-control', **kwargs) }} {% if field.errors %} {% for e in field.errors %} - <p class="help-block">{{ e }}</p> + <div class="invalid-feedback">{{ e }}</div> {% endfor %} {% endif %} </div> @@ -77,13 +77,14 @@ <div class="form-group {% if field.errors %}has-error{% endif %} {{ kwargs.pop('class_', '') }}"> {% if field.type != 'HiddenField' and label_visible %} {% if not label %}{% set label=field.label.text %}{% endif %} - <label for="{{ field.id }}" class="control-label">{{ label|safe }}</label> + <label for="{{ field.id }}">{{ label|safe }}</label> {% endif %} - <div class="metapackage_selector bulletselector"> + <div class="metapackage_selector bulletselector form-control"> <input type="text" placeholder="Comma-seperated values"> <div class="clearboth"></div> </div> {{ field(class_='form-control', **kwargs) }} + <div class="invalid-remaining invalid-feedback"></div> {% if field.errors %} {% for e in field.errors %} <p class="help-block">{{ e }}</p> @@ -96,13 +97,14 @@ <div class="form-group {% if field.errors %}has-error{% endif %} {{ kwargs.pop('class_', '') }}"> {% if field.type != 'HiddenField' and label_visible %} {% if not label %}{% set label=field.label.text %}{% endif %} - <label for="{{ field.id }}" class="control-label">{{ label|safe }}</label> + <label for="{{ field.id }}">{{ label|safe }}</label> {% endif %} - <div class="deps_selector bulletselector"> + <div class="deps_selector bulletselector form-control"> <input type="text" placeholder="Comma-seperated values"> <div class="clearboth"></div> </div> {{ field(class_='form-control', **kwargs) }} + <div class="invalid-remaining invalid-feedback"></div> {% if field.errors %} {% for e in field.errors %} <p class="help-block">{{ e }}</p> @@ -134,7 +136,7 @@ {% macro render_submit_field(field, label=None, tabindex=None) -%} {% if not label %}{% set label=field.label.text %}{% endif %} {#<button type="submit" class="form-control btn btn-default btn-primary">{{label}}</button>#} - <input type="submit" value="{{label}}" + <input type="submit" value="{{label}}" class="btn btn-primary" {% if tabindex %}tabindex="{{ tabindex }}"{% endif %} > {%- endmacro %} diff --git a/app/templates/macros/threads.html b/app/templates/macros/threads.html index cdb6b4f..9ce8a73 100644 --- a/app/templates/macros/threads.html +++ b/app/templates/macros/threads.html @@ -25,12 +25,24 @@ {% endif %} {% endmacro %} -{% macro render_threadlist(threads) -%} - <ul> +{% macro render_threadlist(threads, list_group=False) -%} + {% if not list_group %}<ul>{% endif %} + <li {% if list_group %}class="list-group-item"{% endif %}> {% for t in threads %} - <li>{% if t.private %}🔒 {% endif %}<a href="{{ url_for('thread_page', id=t.id) }}">{{ t.title }}</a> by {{ t.author.display_name }}</li> + {% if list_group %} + <a href="{{ url_for('thread_page', id=t.id) }}"> + {% if t.private %}🔒 {% endif %} + {{ t.title }} + by {{ t.author.display_name }} + </a> + {% else %} + {% if t.private %}🔒 {% endif %} + <a href="{{ url_for('thread_page', id=t.id) }}">{{ t.title }}</a> + by {{ t.author.display_name }} + {% endif %} {% else %} - <li><i>No threads found</i></li> + <i>No threads found</i> {% endfor %} + </li> </ul> {% endmacro %} diff --git a/app/templates/macros/topics.html b/app/templates/macros/topics.html index b38286b..a3d40c6 100644 --- a/app/templates/macros/topics.html +++ b/app/templates/macros/topics.html @@ -1,5 +1,5 @@ {% macro render_topics_table(topics, show_author=True) -%} -<table> +<table class="table"> <tr> <th>Id</th> <th></th> diff --git a/app/templates/packages/create_edit.html b/app/templates/packages/create_edit.html index fee73bd..54bd9b3 100644 --- a/app/templates/packages/create_edit.html +++ b/app/templates/packages/create_edit.html @@ -7,86 +7,96 @@ {% endif %} {% endblock %} +{% from "macros/forms.html" import render_field, render_submit_field, form_scripts, render_multiselect_field, render_mpackage_field, render_deps_field, package_lists %} + +{% block scriptextra %} + {{ form_scripts() }} + + <script src="/static/simplemde.min.js"></script> + <link rel="stylesheet" type="text/css" href="/static/simplemde.min.css"> + <script> + var simplemde = new SimpleMDE({ element: $("#desc")[0] }); + </script> + + {% if enable_wizard %} + <script src="/static/url.min.js"></script> + <script src="/static/polltask.js"></script> + <script src="/static/package_create.js"></script> + <noscript> + <div class="box box_grey alert alert-warning"> + <span class="icon_message"></span> + Javascript is needed to automatically import metadata from VCS. + </div> + </noscript> + {% endif %} + <script src="/static/package_edit.js"></script> +{% endblock %} + {% block content %} <h1>Create Package</h1> - <div class="box box_grey alert alert-info"> - Have you read the Package Inclusion Policy and Guidance yet? + <div class="alert alert-info"> + <a class="float-right btn btn-sm btn-default" href="{{ url_for('flatpage', path='policy_and_guidance') }}">View</a> - <a class="alert_right button" href="{{ url_for('flatpage', path='policy_and_guidance') }}">View</a> + Have you read the Package Inclusion Policy and Guidance yet? </div> - {% from "macros/forms.html" import render_field, render_submit_field, form_includes, render_multiselect_field, render_mpackage_field, render_deps_field, package_lists %} - {{ form_includes() }} {{ package_lists() }} <form method="POST" action="" class="tableform"> {{ form.hidden_tag() }} - <h2 class="pkg_meta">Package</h2> - - {{ render_field(form.type, class_="pkg_meta") }} - {{ render_field(form.name, class_="pkg_meta") }} - {{ render_field(form.title, class_="pkg_meta") }} - {{ render_field(form.shortDesc, class_="pkg_meta") }} - {{ render_field(form.desc, class_="pkg_meta") }} - {{ render_multiselect_field(form.tags, class_="pkg_meta") }} - <div class="pkg_meta"> - {{ render_field(form.license, class_="not_txp") }} - </div> - {{ render_field(form.media_license, class_="pkg_meta") }} + <fieldset> + <legend>Package</legend> + + {{ render_field(form.type, class_="pkg_meta") }} + {{ render_field(form.name, class_="pkg_meta") }} + {{ render_field(form.title, class_="pkg_meta") }} + {{ render_field(form.shortDesc, class_="pkg_meta") }} + {{ render_field(form.desc, class_="pkg_meta") }} + {{ render_multiselect_field(form.tags, class_="pkg_meta") }} + <div class="pkg_meta"> + {{ render_field(form.license, class_="not_txp") }} + </div> + {{ render_field(form.media_license, class_="pkg_meta") }} + </fieldset> - <div class="pkg_meta"> - <h2 class="not_txp">Dependency Info</h2> + <fieldset class="pkg_meta"> + <legend class="not_txp">Package</legend> {{ render_mpackage_field(form.provides_str, class_="not_txp", placeholder="Comma separated list") }} {{ render_deps_field(form.harddep_str, class_="not_txp not_game", placeholder="Comma separated list") }} {{ render_deps_field(form.softdep_str, class_="not_txp not_game", placeholder="Comma separated list") }} - </div> + </fieldset> - <h2 class="pkg_meta">Repository and Links</h2> + <fieldset> + <legend class="pkg_meta">Repository and Links</legend> - <div class="pkg_wiz_1"> - <p>Enter the repo URL for the package. - If the repo uses git then the metadata will be automatically imported.</p> + <div class="pkg_wiz_1"> + <p>Enter the repo URL for the package. + If the repo uses git then the metadata will be automatically imported.</p> - <p>Leave blank if you don't have a repo. Click skip if the import fails.</p> - </div> + <p>Leave blank if you don't have a repo. Click skip if the import fails.</p> + </div> - {{ render_field(form.repo, class_="pkg_repo") }} + {{ render_field(form.repo, class_="pkg_repo") }} - <div class="pkg_wiz_1"> - <a id="pkg_wiz_1_next" class="button button-primary">Next (Autoimport)</a> - <a id="pkg_wiz_1_skip" class="button button-default">Skip Autoimport</a> - </div> - <div class="pkg_wiz_2"> - Importing... (This may take a while) - </div> + <div class="pkg_wiz_1"> + <a id="pkg_wiz_1_next" class="btn btn-primary">Next (Autoimport)</a> + <a id="pkg_wiz_1_skip" class="btn btn-default">Skip Autoimport</a> + </div> - {{ render_field(form.website, class_="pkg_meta") }} - {{ render_field(form.issueTracker, class_="pkg_meta") }} - {{ render_field(form.forums, class_="pkg_meta") }} - <div class="pkg_meta">{{ render_submit_field(form.submit) }}</div> - </form> + <div class="pkg_wiz_2"> + Importing... (This may take a while) + </div> - <script src="/static/simplemde.min.js"></script> - <link rel="stylesheet" type="text/css" href="/static/simplemde.min.css"> - <script> - var simplemde = new SimpleMDE({ element: $("#desc")[0] }); - </script> + {{ render_field(form.website, class_="pkg_meta") }} + {{ render_field(form.issueTracker, class_="pkg_meta") }} + {{ render_field(form.forums, class_="pkg_meta") }} + </fieldset> - {% if enable_wizard %} - <script src="/static/url.min.js"></script> - <script src="/static/polltask.js"></script> - <script src="/static/package_create.js"></script> - <noscript> - <div class="box box_grey alert alert-warning"> - <span class="icon_message"></span> - Javascript is needed to automatically import metadata from VCS. - </div> - </noscript> - {% endif %} - <script src="/static/package_edit.js"></script> + <div class="pkg_meta">{{ render_submit_field(form.submit) }}</div> + </form> {% endblock %} diff --git a/app/templates/packages/delete.html b/app/templates/packages/delete.html index 95709c3..96f37f3 100644 --- a/app/templates/packages/delete.html +++ b/app/templates/packages/delete.html @@ -12,7 +12,7 @@ <p>This action can be undone by the admin, but he'll be very annoyed!</p> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> - <input type="submit" value="Delete" class="button-danger" /> + <input type="submit" value="Delete" class="btn-danger" /> </div> </form> {% endblock %} diff --git a/app/templates/packages/list.html b/app/templates/packages/list.html index 5a9e58c..fd27373 100644 --- a/app/templates/packages/list.html +++ b/app/templates/packages/list.html @@ -5,35 +5,10 @@ {% endblock %} {% block content %} - <form method="get" action="" class="plsearchform"> - {% if type %}<input type="hidden" name="type" value="{{ type }}" />{% endif %} - <input type="text" name="q" value="{{ query or ''}}" /> - <input type="submit" value="Search" /> - <input type="submit" name="lucky" value="I'm feeling lucky" /> - - <p> - Found {{ packages_count }} packages. - </p> - </form> - - <!--<aside class="box box_grey outsidecontainer"> - <h3>Tags</h3> - - <ul class="flatlist"> - {% for t in tags %} - <li><a href="{{ url_for('packages_page', q=(query or '')+' tag:'+t.name, type=type) }}"> - {{ t.title }} - </a></li> - {% else %} - <li><i>No tags available</i></ul> - {% endfor %} - </ul> - </aside> --> - {% from "macros/packagegridtile.html" import render_pkggrid %} {{ render_pkggrid(packages) }} - <ul class="buttonset linedbuttonset"> + <ul class="btnset linedbuttonset"> {% if prev_url %}<li><a href="{{ prev_url }}">Previous</a></li>{% endif %} <li>{{ page }} / {{ page_max }}</li> {% if next_url %}<li><a href="{{ next_url }}">Next</a></li> {% endif %} diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index f5ff628..89174a0 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -1,335 +1,366 @@ +{% set query=package.name %} + {% extends "base.html" %} {% block title %} {{ package.title }} {% endblock %} -{% block content %} - {% if not package.approved %} - <div class="box box_grey alert alert-warning"> - <span class="icon_message"></span> - {% if package.releases.count() == 0 %} - {% if package.checkPerm(current_user, "MAKE_RELEASE") %} - You need to create a release before this package can be approved. - <p> - A release is a single downloadable version of your {{ package.type.value | lower }}. - You need to create releases even if you use a rolling release development cycle, - as Minetest needs them to check for updates. - </p> - <a class="button" href="{{ package.getCreateReleaseURL() }}">Create Release</a> - {% else %} - A release is required before this package can be approved. - {% endif %} +{% block container %} + <header class="jumbotron pb-3" + style="background: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url('{{ package.getMainScreenshotURL() }}'); + background-size: cover; + background-repeat: no-repeat; + background-position: center;"> + <div class="container"> + <h1 class="display-3">{{ package.title }} by {{ package.author.display_name }}</h1> + + <p class="lead"> + {{ package.shortDesc }} + </p> + + <div class="row" style="margin-top: 2rem;"> + <div class="col"> + </div> + <div class="btn-group-horizontal col-md-auto"> + {% if package.repo %}<a class="btn btn-secondary" href="{{ package.repo }}">View Source</a>{% endif %} + {% if package.forums %}<a class="btn btn-secondary" href="https://forum.minetest.net/viewtopic.php?t={{ package.forums }}">Forums</a>{% endif %} + {% if package.issueTracker %}<a class="btn btn-secondary" href="{{ package.issueTracker }}">Issue Tracker</a>{% endif %} + {% if package.website %}<a class="btn btn-secondary" href="{{ package.website }}">Website</a>{% endif %} + </div> + </div> + </div> + </header> - {% elif (package.type == package.type.GAME or package.type == package.type.TXP) and package.screenshots.count() == 0 %} - You need to add at least one screenshot. + <main class="container mt-4"> + {% if not package.approved %} + <div class="alert alert-warning"> + <span class="icon_message"></span> + {% if package.releases.count() == 0 %} + <h4 class="alert-heading">Release Required</h4> + {% if package.checkPerm(current_user, "MAKE_RELEASE") %} + <p>You need to create a release before this package can be approved.</p> + <p> + A release is a single downloadable version of your {{ package.type.value | lower }}. + You need to create releases even if you use a rolling release development cycle, + as Minetest needs them to check for updates. + </p> + <a class="btn" href="{{ package.getCreateReleaseURL() }}">Create Release</a> + {% else %} + A release is required before this package can be approved. + {% endif %} - {% elif topic_error_lvl == "error" %} - Please fix the below topic issue(s). + {% elif (package.type == package.type.GAME or package.type == package.type.TXP) and package.screenshots.count() == 0 %} + You need to add at least one screenshot. - {% elif "Other" in package.license.name or "Other" in package.media_license.name %} - Please wait for the license to be added to CDB. + {% elif topic_error_lvl == "error" %} + Please fix the below topic issue(s). - {% else %} - {% if package.screenshots.count() == 0 %} - <b>You should add at least one screenshot, but this isn't required.</b><br /> - {% endif %} + {% elif "Other" in package.license.name or "Other" in package.media_license.name %} + Please wait for the license to be added to CDB. - {% if not package.getDownloadRelease() %} - Please wait for the release to be approved. - {% elif package.checkPerm(current_user, "APPROVE_NEW") %} - You can now approve this package if you're ready. - <form method="post" action="{{ package.getApproveURL() }}"> - <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> - <input type="submit" value="Approve" /> - </form> {% else %} - Please wait for the package to be approved. - {% endif %} - {% endif %} - <div style="clear: both;"></div> - </div> + {% if package.screenshots.count() == 0 %} + <b>You should add at least one screenshot, but this isn't required.</b><br /> + {% endif %} - {% if topic_error %} - <div class="box box_grey alert alert-{{ topic_error_lvl }}"> - <span class="icon_message"></span> - {{ topic_error | safe }} + {% if not package.getDownloadRelease() %} + Please wait for the release to be approved. + {% elif package.checkPerm(current_user, "APPROVE_NEW") %} + <form class="float-right" method="post" action="{{ package.getApproveURL() }}"> + <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> + <input class="btn btn-sm btn-warning" type="submit" value="Approve" /> + </form> + You can now approve this package if you're ready. + {% else %} + Please wait for the package to be approved. + {% endif %} + {% endif %} <div style="clear: both;"></div> </div> - {% endif %} - - {% if package.author == current_user or package.checkPerm(current_user, "APPROVE_NEW") %} - {% if review_thread %} - <h2>{% if review_thread.private %}🔒{% endif %} {{ review_thread.title }}</h2> - {% if review_thread.private %} - <p><i> - This thread is only visible to the package owner and users of - Editor rank or above. - </i></p> - {% endif %} - {% from "macros/threads.html" import render_thread %} - {{ render_thread(review_thread, current_user) }} - {% else %} - <div class="box box_grey alert alert-info"> - Privately ask a question or give feedback - - <a class="alert_right button" href="{{ url_for('new_thread_page', pid=package.id, title='Package approval comments') }}">Open Thread</a> + {% if topic_error %} + <div class="alert alert-{{ topic_error_lvl }}"> + <span class="icon_message"></span> + {{ topic_error | safe }} + <div style="clear: both;"></div> </div> {% endif %} - {% endif %} - {% endif %} - - <h1>{{ package.title }} by {{ package.author.display_name }}</h1> - - <ul class="screenshot_list"> - {% for ss in package.screenshots %} - {% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %} - <li> - <a href="{% if package.checkPerm(current_user, 'ADD_SCREENSHOTS') %}{{ ss.getEditURL() }}{% else %}{{ ss.url }}{% endif %}"> - <img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" /> - </a> - </li> - {% endif %} - {% endfor %} - </ul> - <aside class="asideright box box_grey"> - <h3>Details</h3> - - <div class="box-body"> - {% if not package.license.is_foss and not package.media_license.is_foss and package.type != package.type.TXP %} - <div class="box box_grey alert alert-error" style="margin-top: 0;"> - <b>Warning:</b> Non-free code and media. - </div> - {% elif not package.license.is_foss and package.type != package.type.TXP %} - <div class="box box_grey alert alert-error" style="margin-top: 0;"> - <b>Warning:</b> Non-free code. - </div> - {% elif not package.media_license.is_foss %} - <div class="box box_grey alert alert-error" style="margin-top: 0;"> - <b>Warning:</b> Non-free media. + {% if similar_topics %} + <div class="alert alert-warning"> + Please make sure that this package has the right to + the name '{{ package.name }}'. + See the + <a href="/policy_and_guidance/">Inclusion Policy</a> + for more info. </div> {% endif %} - <table> - <tr> - <td>Name</td> - <td>{{ package.name }}</td> - </tr> - {% if package.provides %} - <tr> - <td>Provides</td> - <td>{% for meta in package.provides %} - <a href="{{ url_for('meta_package_page', name=meta.name) }}">{{ meta.name }}</a> - {%- if not loop.last %} - , - {% endif %} - {% endfor %}</td> - </tr> - {% endif %} - <tr> - <td>Author</td> - <td class="{{ package.author.rank }}"> - <a href="{{ url_for('user_profile_page', username=package.author.username) }}"> - {{ package.author.display_name }} - </a> - </td> - </tr> - <tr> - <td>Type</td> - <td>{{ package.type.value }}</td> - </tr> - <tr> - <td>License</td> - <td> - {% if package.license == package.media_license %} - {{ package.license.name }} - {% elif package.type == package.type.TXP %} - {{ package.media_license.name }} - {% else %} - {{ package.license.name }} for code,<br /> - {{ package.media_license.name }} for media. - {% endif %} - </td> - </tr> - <tr> - <td>Added</td> - <td>{{ package.created_at | datetime }}</td> - </tr> - </table> - - <ul class="buttonset linedbuttonset"> - {% if package.getDownloadRelease() %}<li><a href="{{ package.getDownloadURL() }}" class="btn_green">Download</a></li>{% endif %} - {% if package.repo %}<li><a href="{{ package.repo }}">View Source</a></li>{% endif %} - {% if package.forums %}<li><a href="https://forum.minetest.net/viewtopic.php?t={{ package.forums }}">Forums</a></li>{% endif %} - {% if package.issueTracker %}<li><a href="{{ package.issueTracker }}">Issue Tracker</a></li>{% endif %} - {% if package.website %}<li><a href="{{ package.website }}">Website</a></li>{% endif %} - {% if package.checkPerm(current_user, "EDIT_PACKAGE") %} - <li><a href="{{ package.getEditURL() }}">Edit</a></li> - <li><a href="{{ package.getNewScreenshotURL() }}">Add screenshot</a></li> - {% endif %} - {# {% if current_user.is_authenticated %} - <li><a href="{{ package.getCreateEditRequestURL() }}">Suggest Changes</a></li> - {% endif %} #} - {% if package.checkPerm(current_user, "MAKE_RELEASE") %} - <li><a href="{{ package.getCreateReleaseURL() }}">Create Release</a></li> - {% endif %} - {% if package.approved and package.checkPerm(current_user, "CREATE_THREAD") %} - <li><a href="{{ url_for('new_thread_page', pid=package.id) }}">Open Thread</a></li> - {% endif %} - {% if package.checkPerm(current_user, "DELETE_PACKAGE") %} - <li><a href="{{ package.getDeleteURL() }}">Delete</a></li> - {% endif %} - </ul> - </div> - </aside> - <p class="package-short-large">{{ package.shortDesc }}</p> + {% if package.author == current_user or package.checkPerm(current_user, "APPROVE_NEW") %} + {% if review_thread %} + <h2>{% if review_thread.private %}🔒{% endif %} {{ review_thread.title }}</h2> + {% if review_thread.private %} + <p><i> + This thread is only visible to the package owner and users of + Editor rank or above. + </i></p> + {% endif %} - {{ package.desc | markdown }} + {% from "macros/threads.html" import render_thread %} + {{ render_thread(review_thread, current_user) }} + {% else %} + <div class="alert alert-info"> + <a class="float-right btn btn-sm btn-info" href="{{ url_for('new_thread_page', pid=package.id, title='Package approval comments') }}">Open Thread</a> - <h3>Releases</h3> + Privately ask a question or give feedback + <div style="clear:both;"></div> + </div> + {% endif %} + {% endif %} + {% endif %} - <ul> - {% for rel in releases %} - {% if rel.approved or package.checkPerm(current_user, "MAKE_RELEASE") or package.checkPerm(current_user, "APPROVE_RELEASE") %} - <li> - {% if not rel.approved %}<i>{% endif %} + <aside class="float-right ml-4" style="width: 18rem;"> + {% if package.getDownloadRelease() %} + <a class="btn btn-download btn-lg btn-block" + href="{{ package.getDownloadURL() }}" class="btn_green"> + Download + </a> + {% else %} + No download available. + {% endif %} - <a href="{{ rel.getDownloadURL() }}">{{ rel.title }}</a>{% if rel.commit_hash %} - [{{ rel.commit_hash | truncate(5, end='') }}]{% endif %}, - created {{ rel.releaseDate | datetime }}. - {% if rel.task_id %} - <a href="{{ url_for('check_task', id=rel.task_id, r=package.getDetailsURL()) }}">Importing...</a> - {% elif not rel.approved %} - Waiting for approval. + <div class="card my-4"> + <div class="card-header"> + Details + <div class="btn-group float-right"> + {% if package.checkPerm(current_user, "EDIT_PACKAGE") %} + <a class="btn btn-default btn-sm mx-1" href="{{ package.getEditURL() }}">Edit</a> {% endif %} + {# {% if current_user.is_authenticated %} + <a class="btn btn-default btn-sm mx-1" href="{{ package.getCreateEditRequestURL() }}">Suggest Changes</a> + {% endif %} #} + {% if package.checkPerm(current_user, "DELETE_PACKAGE") %} + <a class="btn btn-danger btn-sm mx-1" href="{{ package.getDeleteURL() }}">Delete</a> + {% endif %} + </div> - {% if package.checkPerm(current_user, "MAKE_RELEASE") or package.checkPerm(current_user, "APPROVE_RELEASE") %} - <a href="{{ rel.getEditURL() }}">Edit - {% if not rel.task_id and not rel.approved and package.checkPerm(current_user, "APPROVE_RELEASE") %} - / Approve - {% endif %} - </a> + </div> + {% if not package.license.is_foss and not package.media_license.is_foss and package.type != package.type.TXP %} + {% set package_warning="Non-free code and media." %} + {% elif not package.license.is_foss and package.type != package.type.TXP %} + {% set package_warning="Non-free code." %} + {% elif not package.media_license.is_foss %} + {% set package_warning="Non-free media." %} + {% endif %} + {% if package_warning %} + <div class="card-body"> + <div class="alert alert-danger"> + <b>Warning:</b> {{ package_warning }} + </div> + </div> + {% endif %} + <table class="table"> + <tr> + <td>Name</td> + <td>{{ package.name }}</td> + </tr> + {% if package.provides %} + <tr> + <td>Provides</td> + <td>{% for meta in package.provides %} + <a class="badge badge-primary" + href="{{ url_for('meta_package_page', name=meta.name) }}">{{ meta.name }}</a> + {%- if not loop.last %} + , + {% endif %} + {% endfor %}</td> + </tr> {% endif %} + <tr> + <td>Author</td> + <td class="{{ package.author.rank }}"> + <a href="{{ url_for('user_profile_page', username=package.author.username) }}"> + {{ package.author.display_name }} + </a> + </td> + </tr> + <tr> + <td>Type</td> + <td>{{ package.type.value }}</td> + </tr> + <tr> + <td>License</td> + <td> + {% if package.license == package.media_license %} + {{ package.license.name }} + {% elif package.type == package.type.TXP %} + {{ package.media_license.name }} + {% else %} + {{ package.license.name }} for code,<br /> + {{ package.media_license.name }} for media. + {% endif %} + </td> + </tr> + <tr> + <td>Added</td> + <td>{{ package.created_at | datetime }}</td> + </tr> + <tr> + <td>Tags</td> + <td> + {% for t in package.tags %} + <span class="badge badge-primary">{{ t.title }}</span> + {% else %} + <i>No tags.</i> + {% endfor %} + </td> + </table> + </div> + + {% if package.type == package.type.MOD %} + <div class="card my-4"> + <div class="card-header">Dependencies</div> + <div class="card-body"> + {% for dep in package.dependencies %} + {% if dep.optional %} + {% set color="secondary" %} + {% else %} + {% set color="primary" %} + {% endif %} - {% if not rel.approved %}</i>{% endif %} - </li> - {% endif %} - {% else %} - <li>No releases available.</li> - {% endfor %} - </ul> - - <h3>Tags</h3> - <ul> - {% for t in package.tags %} - <li>{{ t.title }}</li> - {% else %} - <li>No tags.</li> - {% endfor %} - </ul> - - <!-- <table class="table-topalign"> - <tr> - <td> --> - <h3>Dependencies</h3> - <ul> - {% for dep in package.dependencies %} - <li> {%- if dep.package %} - <a href="{{ dep.package.getDetailsURL() }}">{{ dep.package.title }}</a> by {{ dep.package.author.display_name }} + <a class="badge badge-{{ color }}" + href="{{ dep.package.getDetailsURL() }}"> + {{ dep.package.title }} by {{ dep.package.author.display_name }} {% elif dep.meta_package %} - <a href="{{ url_for('meta_package_page', name=dep.meta_package.name) }}">{{ dep.meta_package.name }}</a> + <a class="badge badge-{{ color }}" + href="{{ url_for('meta_package_page', name=dep.meta_package.name) }}"> + {{ dep.meta_package.name }} {% else %} {{ "Excepted package or meta_package in dep!" | throw }} - {% endif %} - {% if dep.optional %} - [optional] - {% endif %} - </li> + {% endif %}</a> + {% else %} + <i>No dependencies</i> + {% endfor %} + </div> + </div> + {% endif %} + + <div class="card my-4"> + <div class="card-header"> + Releases + {% if package.checkPerm(current_user, "MAKE_RELEASE") %} + <a class="float-right" + href="{{ package.getCreateReleaseURL() }}">+</a> + {% endif %} + </div> + <ul class="list-group list-group-flush"> + {% for rel in releases %} + {% if rel.approved or package.checkPerm(current_user, "MAKE_RELEASE") or package.checkPerm(current_user, "APPROVE_RELEASE") %} + <li class="list-group-item list-group-item-action"> + + {% if package.checkPerm(current_user, "MAKE_RELEASE") or package.checkPerm(current_user, "APPROVE_RELEASE") %} + <a class="btn btn-sm btn-primary float-right" href="{{ rel.getEditURL() }}">Edit + {% if not rel.task_id and not rel.approved and package.checkPerm(current_user, "APPROVE_RELEASE") %} + / Approve + {% endif %} + </a> + {% endif %} + + {% if not rel.approved %}<i>{% endif %} + + <a href="{{ rel.getDownloadURL() }}">{{ rel.title }}</a>{% if rel.commit_hash %} + [{{ rel.commit_hash | truncate(5, end='') }}]{% endif %}<br> + <small>created {{ rel.releaseDate | datetime }}.</small> + {% if rel.task_id %} + <a href="{{ url_for('check_task', id=rel.task_id, r=package.getDetailsURL()) }}">Importing...</a> + {% elif not rel.approved %} + Waiting for approval. + {% endif %} + + {% if not rel.approved %}</i>{% endif %} + + </li> + {% endif %} {% else %} - <li><i>No dependencies</i></li> + <li class="list-group-item">No releases available.</li> {% endfor %} </ul> - <!-- </td> - <td> - <h3>Required by</h3> + </div> + + <div class="card my-4""> + <div class="card-header"> + {% if package.approved and package.checkPerm(current_user, "CREATE_THREAD") %} + <a class="float-right" + href="{{ url_for('new_thread_page', pid=package.id) }}">+</a> + {% endif %} + Threads + </div> + <ul class="list-group list-group-flush"> + {% from "macros/threads.html" import render_threadlist %} + {{ render_threadlist(threads, list_group=True) }} + </ul> + </div> + </aside> + + <ul class="screenshot_list mb-4"> + {% if package.checkPerm(current_user, "EDIT_PACKAGE") %} + <a class="btn btn-primary float-right" href="{{ package.getNewScreenshotURL() }}">Add screenshot</a> + {% endif %} + {% for ss in package.screenshots %} + {% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %} + <li> + <a href="{% if package.checkPerm(current_user, 'ADD_SCREENSHOTS') %}{{ ss.getEditURL() }}{% else %}{{ ss.url }}{% endif %}"> + <img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" /> + </a> + </li> + {% endif %} + {% endfor %} + </ul> + + {{ package.desc | markdown }} + + <div style="clear: both;"></div> + + {# + {% if current_user.is_authenticated or requests %} + <h3>Edit Requests</h3> + <ul> - {% for p in package.dependents %} - <li><a href="{{ p.getDetailsURL() }}">{{ p.title }}</a> by {{ p.author.display_name }}</li> + {% for r in requests %} + <li> + <a href="{{ r.getURL() }}">{{ r.title }}</a> + by + <a href="{{ url_for('user_profile_page', username=r.author.username) }}">{{ r.author.display_name }}</a> + </li> {% else %} - {% if not package.softdependents %} - <li>No dependents.</li> - {% endif %} - {% endfor %} - {% for p in package.softdependents %} - <li><a href="{{ p.getDetailsURL() }}">{{ p.title }}</a> by {{ p.author.display_name }} [optional]</li> + <li>No edit requests have been made.</li> {% endfor %} </ul> - </td> - </tr> - </table> --> + {% endif %} + #} - {# - {% if current_user.is_authenticated or requests %} - <h3>Edit Requests</h3> + {% if alternatives %} + <h3>Related</h3> + {% from "macros/packagegridtile.html" import render_pkggrid %} + {{ render_pkggrid(alternatives) }} + {% endif %} + + {% if similar_topics %} + <h3>Similar Forum Topics</h3> <ul> - {% for r in requests %} + {% for t in similar_topics %} <li> - <a href="{{ r.getURL() }}">{{ r.title }}</a> - by - <a href="{{ url_for('user_profile_page', username=r.author.username) }}">{{ r.author.display_name }}</a> + [{{ t.type.value }}] + <a href="https://forum.minetest.net/viewtopic.php?t={{ t.topic_id }}"> + {{ t.title }} by {{ t.author.display_name }} + </a> + {% if t.wip %}[WIP]{% endif %} </li> - {% else %} - <li>No edit requests have been made.</li> {% endfor %} </ul> {% endif %} - #} - - {% if alternatives %} - <h3>Alternatives</h3> - <ul> - {% for p in alternatives %} - <li><a href="{{ p.getDetailsURL() }}">{{ p.title }} by {{ p.author.display_name }}</a></li> - {% endfor %} - </ul> - {% endif %} - - {% if similar_topics %} - <h3>Similar Forum Topics</h3> - {% if not package.approved and package.type == package.type.MOD %} - <div class="box box_grey alert alert-warning"> - Please make sure that this package has the right to - the name '{{ package.name }}'. - See the - <a href="/policy_and_guidance/">Inclusion Policy</a> - for more info. - </div> - {% endif %} - <ul> - {% for t in similar_topics %} - <li> - [{{ t.type.value }}] - <a href="https://forum.minetest.net/viewtopic.php?t={{ t.topic_id }}"> - {{ t.title }} by {{ t.author.display_name }} - </a> - {% if t.wip %}[WIP]{% endif %} - </li> - {% endfor %} - </ul> - {% endif %} - - {% if threads %} - <h3>Threads</h3> - - {% if package.approved and package.checkPerm(current_user, "CREATE_THREAD") %} - <p><a href="{{ url_for('new_thread_page', pid=package.id) }}">Open Thread</a></p> - {% endif %} - - {% from "macros/threads.html" import render_threadlist %} - {{ render_threadlist(threads) }} - {% endif %} + </main> {% endblock %} diff --git a/app/templates/users/claim.html b/app/templates/users/claim.html index ae8e9c9..5a6b53a 100644 --- a/app/templates/users/claim.html +++ b/app/templates/users/claim.html @@ -19,7 +19,7 @@ Creating an Account Please log out to continue. </p> <p> - <a href="{{ url_for('user.logout', next=url_for('user_claim_page')) }}" class="button">Logout</a> + <a href="{{ url_for('user.logout', next=url_for('user_claim_page')) }}" class="btn">Logout</a> </p> {% else %} <p> @@ -108,7 +108,7 @@ Creating an Account options. </p> - <a class="button" href="{{ url_for('user.register') }}">Register</a> + <a class="btn" href="{{ url_for('user.register') }}">Register</a> </div> </div> {% endif %} diff --git a/app/templates/users/user_profile_page.html b/app/templates/users/user_profile_page.html index 1120849..da9f8ca 100644 --- a/app/templates/users/user_profile_page.html +++ b/app/templates/users/user_profile_page.html @@ -7,72 +7,74 @@ {% block content %} {% if not current_user.is_authenticated and user.rank == user.rank.NOT_JOINED and user.forums_username %} -<div class="box box_grey alert alert-info"> - Is this you? Claim your account now! +<div class="alert alert-info alert alert-info"> + <a class="float-right btn btn-default btn-sm" + href="{{ url_for('user_claim_page', username=user.forums_username) }}">Claim</a> - <a class="alert_right button" href="{{ url_for('user_claim_page', username=user.forums_username) }}">Claim</a> + Is this you? Claim your account now! </div> {% endif %} -<div class="box box_grey"> - <h2>{{ user.display_name }}</h2> - - <table class="box-body"> - <tr> - <td>Rank:</td> - <td> - {{ user.rank.getTitle() }} - </td> - </tr> - <tr> - <td>Accounts:</td> - <td> - {% if user.forums_username %} - <a href="https://forum.minetest.net/memberlist.php?mode=viewprofile&un={{ user.forums_username }}"> - Minetest Forum - </a> - {% elif user == current_user %} - No forum account - {% endif %} - - {% if (user.forums_username and user.github_username) or user == current_user %} - | - {% endif %} - - {% if user.github_username %} - <a href="https://github.com/{{ user.github_username }}">GitHub</a> - {% elif user == current_user %} - <a href="{{ url_for('github_signin_page') }}">Link Github</a> - {% endif %} - +<div class="row mb-3"> + <div class="col-sm-6"> + <div class="card"> + <h2 class="card-header">{{ user.display_name }}</h2> + <table class="table"> + <tr> + <td>Rank:</td> + <td> + {{ user.rank.getTitle() }} + </td> + </tr> + <tr> + <td>Accounts:</td> + <td> + {% if user.forums_username %} + <a href="https://forum.minetest.net/memberlist.php?mode=viewprofile&un={{ user.forums_username }}"> + Minetest Forum + </a> + {% elif user == current_user %} + No forum account + {% endif %} + + {% if (user.forums_username and user.github_username) or user == current_user %} + | + {% endif %} + + {% if user.github_username %} + <a href="https://github.com/{{ user.github_username }}">GitHub</a> + {% elif user == current_user %} + <a href="{{ url_for('github_signin_page') }}">Link Github</a> + {% endif %} + + {% if user == current_user %} + 🌎 + {% endif %} + </td> + </tr> {% if user == current_user %} - 🌎 + <tr> + <td>Password:</td> + <td> + {% if user.password %} + Set | <a href="{{ url_for('user.change_password') }}">Change</a> + {% else %} + Not set | <a href="{{ url_for('set_password_page') }}">Set</a> + {% endif %} + </td> + </tr> {% endif %} - </td> - </tr> - {% if user == current_user %} - <tr> - <td>Password:</td> - <td> - {% if user.password %} - Set | <a href="{{ url_for('user.change_password') }}">Change</a> - {% else %} - Not set | <a href="{{ url_for('set_password_page') }}">Set</a> - {% endif %} - </td> - </tr> - {% endif %} - </table> -</div> + </table> + </div> + </div> {% if form %} {% from "macros/forms.html" import render_field, render_submit_field %} - <div class="box box_grey"> - <h2>Edit Details</h2> - - <form action="" method="POST" class="form box-body" role="form"> - <div class="row"> - <div class="col-sm-6 col-md-5 col-lg-4"> + <div class="col-sm-6"> + <div class="card"> + <h2 class="card-header">Edit Details</h2> + <div class="card-body"> + <form action="" method="POST" class="form box-body" role="form"> {{ form.hidden_tag() }} {% if user.checkPerm(current_user, "CHANGE_DNAME") %} @@ -89,27 +91,26 @@ {% endif %} {{ render_submit_field(form.submit, tabindex=280) }} - </div> + </form> </div> - </form> + </div> </div> {% endif %} +</div> {% from "macros/packagegridtile.html" import render_pkggrid %} {{ render_pkggrid(packages, show_author=False) }} {% if topics_to_add %} - <div class="box box_grey"> - <h2>Unadded Packages</h2> + <div class="card mt-3"> + <h2 class="card-header">Unadded Packages</h2> - <div class="box-body"> - <p> - List of your forum topics which do not have a matching package. - </p> + <p class="card-body"> + List of your forum topics which do not have a matching package. + </p> - {% from "macros/topics.html" import render_topics_table %} - {{ render_topics_table(topics_to_add, show_author=False) }} - </div> + {% from "macros/topics.html" import render_topics_table %} + {{ render_topics_table(topics_to_add, show_author=False) }} </div> {% endif %} |
