Skip to content

Commit 536807d

Browse files
authored
Move rustdoc header out of rustdoc container (Fixes #935) (#982)
1 parent 508a9d0 commit 536807d

File tree

3 files changed

+242
-239
lines changed

3 files changed

+242
-239
lines changed

src/utils/html.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ pub(crate) fn rewrite_lol(
2020
let templates = templates.templates.load();
2121
let tera_head = templates.render("rustdoc/head.html", &ctx).unwrap();
2222
let tera_body = templates.render("rustdoc/body.html", &ctx).unwrap();
23+
let tera_rustdoc_header = templates.render("rustdoc/header.html", &ctx).unwrap();
2324

2425
let head_handler = |head: &mut Element| {
2526
head.append(&tera_head, ContentType::Html);
@@ -51,8 +52,11 @@ pub(crate) fn rewrite_lol(
5152
rustdoc_body_class.set_tag_name("div")?;
5253
// Prepend the tera content
5354
rustdoc_body_class.prepend(&tera_body, ContentType::Html);
54-
// Now, make this a full <body> tag
55+
// Wrap the tranformed body and rustdoc header into a <body> element
5556
rustdoc_body_class.before("<body>", ContentType::Html);
57+
// Insert the header outside of the rustdoc div
58+
rustdoc_body_class.before(&tera_rustdoc_header, ContentType::Html);
59+
// Finalize body with </body>
5660
rustdoc_body_class.after("</body>", ContentType::Html);
5761

5862
Ok(())

templates/rustdoc/body.html

-238
Original file line numberDiff line numberDiff line change
@@ -1,241 +1,3 @@
1-
{%- import "macros.html" as macros -%}
2-
3-
{# The url of the current release, `/crate/:name/:version` #}
4-
{%- set crate_url = "/crate/" ~ krate.name ~ "/" ~ krate.version -%}
5-
6-
<div class="nav-container nav-container-rustdoc">
7-
<div class="container-rustdoc rustdoc-navigation">
8-
<div class="pure-menu pure-menu-horizontal">
9-
<form action="/releases/search" method="GET" class="landing-search-form-nav">
10-
<div id="search-input-nav">
11-
<label for="nav-search">
12-
{{ "search" | fas(fw=true) }}
13-
</label>
14-
15-
<input id="nav-search" name="query" tabindex="-1" type="text"
16-
aria-label="Find crate by search query" placeholder="Find crate">
17-
</div>
18-
19-
<a href="/" class="pure-menu-heading pure-menu-link">
20-
{{ "cube" | fas(fw=true) }} <span class="title">Docs.rs</span>
21-
</a>
22-
23-
<ul class="pure-menu-list">
24-
<li class="pure-menu-item pure-menu-has-children pure-menu-allow-hover">
25-
<a href="{{ crate_url | safe }}" class="pure-menu-link" title="{{ krate.description }}">
26-
{{ "cube" | fas(fw=true) }}
27-
<span class="title"> {{ krate.name }}-{{ krate.version }}</span>
28-
</a>
29-
30-
{# Crate details #}
31-
<div class="pure-menu-children package-details-menu">
32-
{# Crate name, description and license #}
33-
<ul class="pure-menu-list menu-item-divided">
34-
<li class="pure-menu-heading" id="crate-title">
35-
{{ krate.name }} {{ krate.version }}
36-
{{ "copy" | far(id="clipboard", aria_label="Copy crate name and version information", fw=true) }}
37-
</li>
38-
39-
<li class="pure-menu-item">
40-
<a href="{{ crate_url | safe }}" class="pure-menu-link" class="description">
41-
{{ "cube" | fas(fw=true) }} {{ krate.description }}
42-
</a>
43-
</li>
44-
45-
<li class="pure-menu-item">
46-
<a href="{{ crate_url | safe }}" class="pure-menu-link">
47-
{{ "balance-scale-right" | fas(fw=true) }} {{ krate.license }}
48-
</a>
49-
</li>
50-
</ul>
51-
52-
<div class="pure-g menu-item-divided">
53-
<div class="pure-u-1-2 right-border">
54-
<ul class="pure-menu-list">
55-
<li class="pure-menu-heading">Links</li>
56-
57-
{# If the crate has a homepage, show a link to it #}
58-
{%- if krate.homepage_url -%}
59-
<li class="pure-menu-item">
60-
<a href="{{ krate.homepage_url }}" class="pure-menu-link">
61-
{{ "home" | fas(fw=true) }} Homepage
62-
</a>
63-
</li>
64-
{%- endif -%}
65-
66-
{# If the crate has external docs, show a link #}
67-
{%- if krate.documentation_url -%}
68-
<li class="pure-menu-item">
69-
<a href="{{ krate.documentation_url }}" title="Canonical documentation" class="pure-menu-link">
70-
{{ "file-alt" | far(fw=true) }} Documentation
71-
</a>
72-
</li>
73-
{%- endif -%}
74-
75-
{# If the crate is hosted on GitHub, show some stats #}
76-
{%- if krate.github -%}
77-
<li class="pure-menu-item">
78-
<a href="{{ krate.repository_url }}" class="pure-menu-link">
79-
{{ "github" | fab(fw=true) }}
80-
{{ "star" | fas(fw=true) }} {{ krate.github_stars }}
81-
{{ "code-branch" | fas(fw=true) }} {{ krate.github_forks }}
82-
{{ "exclamation-circle" | fas(fw=true) }} {{ krate.github_issues }}
83-
</a>
84-
</li>
85-
86-
{# If all the crate has is a repo url, show it #}
87-
{%- elif repository_url -%}
88-
<li class="pure-menu-item">
89-
<a href="{{ krate.repository_url }}" class="pure-menu-link">
90-
{{ "code-branch" | fas(fw=true) }} Repository
91-
</a>
92-
</li>
93-
{%- endif -%}
94-
95-
<li class="pure-menu-item">
96-
<a href="https://crates.io/crates/{{ krate.name }}" class="pure-menu-link" title="See {{ krate.name }} in crates.io">
97-
{{ "cube" | fas(fw=true) }} Crates.io
98-
</a>
99-
</li>
100-
</ul>
101-
</div>
102-
103-
{# Show the crate authors #}
104-
<div class="pure-u-1-2">
105-
<ul class="pure-menu-list">
106-
<li class="pure-menu-heading">Authors</li>
107-
108-
{%- for author in krate.authors -%}
109-
<li class="pure-menu-item">
110-
<a href="/releases/{{ author[1] }}" class="pure-menu-link">
111-
{{ "user" | fas(fw=true) }} {{ author[0] }}
112-
</a>
113-
</li>
114-
{%- endfor -%}
115-
</ul>
116-
</div>
117-
</div>
118-
119-
<div class="pure-g menu-item-divided">
120-
<div class="pure-u-1-2 right-border">
121-
<ul class="pure-menu-list">
122-
<li class="pure-menu-heading">Dependencies</li>
123-
124-
{# Display all dependencies that the crate has #}
125-
<li class="pure-menu-item">
126-
<div class="pure-menu pure-menu-scrollable sub-menu">
127-
<ul class="pure-menu-list">
128-
{%- for dep in krate.dependencies -%}
129-
<li class="pure-menu-item">
130-
<a href="/{{ dep[0] }}/{{ dep[1] }}" class="pure-menu-link">
131-
{{ dep[0] }} {{ dep[1] }}
132-
<i class="dependencies {{ dep[2] | default(value='') }}">{{ dep[2] | default(value="") }}</i>
133-
</a>
134-
</li>
135-
{%- endfor -%}
136-
</ul>
137-
</div>
138-
</li>
139-
</ul>
140-
</div>
141-
142-
<div class="pure-u-1-2">
143-
<ul class="pure-menu-list">
144-
<li class="pure-menu-heading">Versions</li>
145-
146-
<li class="pure-menu-item">
147-
<div class="pure-menu pure-menu-scrollable sub-menu">
148-
<ul class="pure-menu-list">
149-
{# Display all releases of this crate #}
150-
{{ macros::releases_list(name=krate.name, releases=krate.releases) }}
151-
</ul>
152-
</div>
153-
</li>
154-
</ul>
155-
</div>
156-
</div>
157-
{%- if krate.documented_items and krate.total_items -%}
158-
{% set percent = krate.documented_items * 100 / krate.total_items %}
159-
<div class="pure-g">
160-
<div class="pure-u-1">
161-
<ul class="pure-menu-list">
162-
<li>
163-
<a href="{{ crate_url | safe }}" class="pure-menu-link">
164-
<b>{{ percent | round(precision=2) }}%</b>
165-
of the crate is documented
166-
</a>
167-
</li>
168-
</ul>
169-
</div>
170-
</div>
171-
{%- endif -%}
172-
</div>
173-
</li>
174-
175-
{# If this is the latest release and it's been yanked, just display a warning #}
176-
{%- if is_latest_version and krate.yanked -%}
177-
<li class="pure-menu-item">
178-
<span class="pure-menu-link warn">
179-
{{ "exclamation-triangle" | fas(fw=true) }}
180-
<span class="title"> This release has been yanked</span>
181-
</span>
182-
</li>
183-
184-
{# If the crate isn't the latest & is yanked, display a warning and offer a link to the latest release #}
185-
{%- elif not is_latest_version and krate.yanked -%}
186-
<li class="pure-menu-item">
187-
<a href="{{ latest_path | safe }}" class="pure-menu-link warn"
188-
title="You are seeing a yanked version of {{ krate.name }} crate. Click here to go to latest version.">
189-
{{ "exclamation-triangle" | fas(fw=true) }}
190-
<span class="title"> This release has been yanked, go to latest version</span>
191-
</a>
192-
</li>
193-
194-
{# If this isn't the most recent release, offer a link to the latest #}
195-
{%- elif not is_latest_version -%}
196-
<li class="pure-menu-item">
197-
<a href="{{ latest_path | safe }}" class="pure-menu-link warn"
198-
title="You are seeing an outdated version of {{ krate.name }} crate. Click here to go to latest version.">
199-
{{ "exclamation-triangle" | fas(fw=true) }}
200-
<span class="title"> Go to latest version</span>
201-
</a>
202-
</li>
203-
{%- endif -%}
204-
205-
{# A link to the release's source view #}
206-
<li class="pure-menu-item">
207-
<a href="{{ crate_url | safe }}/source/" title="Browse source of {{ krate.name }}-{{ krate.version }}" class="pure-menu-link">
208-
{{ "folder-open" | far(fw=true) }}
209-
<span class="title"> Source</span>
210-
</a>
211-
</li>
212-
213-
{# Display the platforms that the release has been built for #}
214-
<li class="pure-menu-item pure-menu-has-children pure-menu-allow-hover">
215-
<a href="#" class="pure-menu-link" aria-label="Platform">
216-
{{ "cogs" | fas(fw=true) }}
217-
<span class="title"> Platform</span>
218-
</a>
219-
220-
{# Build the dropdown list showing available targets #}
221-
<ul class="pure-menu-children">
222-
{%- for target in krate.doc_targets -%}
223-
{%- set target_url = "/crate/" ~ krate.name ~ "/" ~ krate.version ~ "/target-redirect/" ~ target ~ "/" ~ inner_path -%}
224-
225-
<li class="pure-menu-item">
226-
<a href="{{ target_url | safe }}" class="pure-menu-link">{{ target }}</a>
227-
</li>
228-
{%- endfor -%}
229-
</ul>
230-
</li>
231-
232-
{%- include "header/global_alert.html" -%}
233-
</ul>
234-
</form>
235-
</div>
236-
</div>
237-
</div>
238-
2391
<script type="text/javascript" src="/menu.js?{{ docsrs_version() | slugify }}"></script>
2402
<script type="text/javascript" src="/index.js?{{ docsrs_version() | slugify }}"></script>
2413
<script>

0 commit comments

Comments
 (0)