Refactor breadcrumbs to respect permissions, refs #1831

This commit is contained in:
Simon Willison 2022-10-13 14:42:52 -07:00
commit 1a5e5f2aa9
13 changed files with 65 additions and 59 deletions

View file

@ -0,0 +1,15 @@
{% macro nav(request, database=None, table=None) -%}
{% if crumb_items is defined %}
{% set items=crumb_items(request=request, database=database, table=table) %}
{% if items %}
<p class="crumbs">
{% for item in items %}
<a href="{{ item.href }}">{{ item.label }}</a>
{% if not loop.last %}
/
{% endif %}
{% endfor %}
</p>
{% endif %}
{% endif %}
{%- endmacro %}

View file

@ -1,4 +1,4 @@
<!DOCTYPE html>
{% import "_crumbs.html" as crumbs with context %}<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
@ -17,7 +17,7 @@
</head>
<body class="{% block body_class %}{% endblock %}">
<div class="not-footer">
<header><nav>{% block nav %}
<header><nav>{% block nav %}{% block crumbs %}{{ crumbs.nav(request=request) }}{% endblock %}
{% set links = menu_links() %}{% if links or show_logout %}
<details class="nav-menu">
<summary><svg aria-labelledby="nav-menu-svg-title" role="img"

View file

@ -9,16 +9,7 @@
{% block body_class %}db db-{{ database|to_css_class }}{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ urls.instance() }}">home</a>
</p>
{{ super() }}
{% endblock %}
{% block content %}
<div class="page-header" style="border-color: #{{ database_color(database) }}">
<h1>{{ metadata.title or database }}{% if private %} 🔒{% endif %}</h1>
{% set links = database_actions() %}{% if links %}

View file

@ -2,13 +2,6 @@
{% block title %}{% if title %}{{ title }}{% else %}Error {{ status }}{% endif %}{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ urls.instance() }}">home</a>
</p>
{{ super() }}
{% endblock %}
{% block content %}
<h1>{% if title %}{{ title }}{% else %}Error {{ status }}{% endif %}</h1>

View file

@ -2,13 +2,6 @@
{% block title %}Log out{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ base_url }}">home</a>
</p>
{{ super() }}
{% endblock %}
{% block content %}
<h1>Log out</h1>

View file

@ -22,13 +22,6 @@
</style>
{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ base_url }}">home</a>
</p>
{{ super() }}
{% endblock %}
{% block content %}
<h1>Recent permissions checks</h1>

View file

@ -18,12 +18,8 @@
{% block body_class %}query db-{{ database|to_css_class }}{% if canned_query %} query-{{ canned_query|to_css_class }}{% endif %}{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ urls.instance() }}">home</a> /
<a href="{{ urls.database(database) }}">{{ database }}</a>
</p>
{{ super() }}
{% block crumbs %}
{{ crumbs.nav(request=request, database=database) }}
{% endblock %}
{% block content %}

View file

@ -15,13 +15,8 @@
{% block body_class %}row db-{{ database|to_css_class }} table-{{ table|to_css_class }}{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ urls.instance() }}">home</a> /
<a href="{{ urls.database(database) }}">{{ database }}</a> /
<a href="{{ urls.table(database, table) }}">{{ table }}</a>
</p>
{{ super() }}
{% block crumbs %}
{{ crumbs.nav(request=request, database=database, table=table) }}
{% endblock %}
{% block content %}

View file

@ -4,13 +4,6 @@
{% block body_class %}show-json{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ urls.instance() }}">home</a>
</p>
{{ super() }}
{% endblock %}
{% block content %}
<h1>{{ filename }}</h1>

View file

@ -16,12 +16,8 @@
{% block body_class %}table db-{{ database|to_css_class }} table-{{ table|to_css_class }}{% endblock %}
{% block nav %}
<p class="crumbs">
<a href="{{ urls.instance() }}">home</a> /
<a href="{{ urls.database(database) }}">{{ database }}</a>
</p>
{{ super() }}
{% block crumbs %}
{{ crumbs.nav(request=request, database=database) }}
{% endblock %}
{% block content %}