From 21036e5058c12d2144b636f9aadf74ad4e07e9f7 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Tue, 7 Jul 2020 17:31:23 -0400 Subject: [PATCH 01/24] Revert "Missing macro import" This reverts commit 5c3e6ed5649d38db57b4850958b5f0dcee2a192b. --- templates/rustdoc/navigation.html | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/templates/rustdoc/navigation.html b/templates/rustdoc/navigation.html index 94c0efddb..c56d1f947 100644 --- a/templates/rustdoc/navigation.html +++ b/templates/rustdoc/navigation.html @@ -1,5 +1,3 @@ -{%- import "macros.html" as macros -%} - {# The url of the current release, `/crate/:name/:version` #} {%- set crate_url = "/crate/" ~ krate.name ~ "/" ~ krate.version -%} @@ -8,10 +6,7 @@
- - +
From 35718e33ed6d890ec21ae70f571ee64fd2641b2e Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Tue, 7 Jul 2020 17:31:23 -0400 Subject: [PATCH 02/24] Revert "Clippy" This reverts commit f9ef9305541d9fa15b1787ff6522db9cb9ea7a15. --- src/web/error.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/web/error.rs b/src/web/error.rs index 0abcc3e92..5c6f55a6a 100644 --- a/src/web/error.rs +++ b/src/web/error.rs @@ -35,7 +35,7 @@ impl Handler for Nope { // user tried to navigate to a resource (doc page/file) that doesn't exist // TODO: Display the attempted page ErrorPage { - title: "The requested resource does not exist", + title: "The requested resource does not exist".into(), message: Some("no such resource".into()), status: Status::NotFound, } @@ -46,7 +46,7 @@ impl Handler for Nope { // user tried to navigate to a crate that doesn't exist // TODO: Display the attempted crate and a link to a search for said crate ErrorPage { - title: "The requested crate does not exist", + title: "The requested crate does not exist".into(), message: Some("no such crate".into()), status: Status::NotFound, } @@ -79,7 +79,7 @@ impl Handler for Nope { Nope::InternalServerError => { // something went wrong, details should have been logged ErrorPage { - title: "Internal server error", + title: "Internal server error".into(), message: Some("internal server error".into()), status: Status::InternalServerError, } From d8d822155edf5ba83e3493b8229573e56c227aa1 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Tue, 7 Jul 2020 17:31:23 -0400 Subject: [PATCH 03/24] Revert "Untangled JS" This reverts commit da71d1b0d9a1c72728c2737d2831038b2d51a933. --- templates/core/home.html | 2 - templates/releases/build_queue.html | 88 +++++++++++++++++++++++++++++ templates/releases/releases.html | 67 +++++++--------------- 3 files changed, 107 insertions(+), 50 deletions(-) diff --git a/templates/core/home.html b/templates/core/home.html index 0ce0164c0..2ef1435ba 100644 --- a/templates/core/home.html +++ b/templates/core/home.html @@ -77,7 +77,6 @@

Docs.rs

if ("key" in ev && typeof ev.key != "undefined") { return ev.key; } - return String.fromCharCode(ev.charCode || ev.keyCode); } @@ -95,7 +94,6 @@

Docs.rs

if (ev.ctrlKey || ev.altKey || ev.metaKey || document.activeElement.tagName === "INPUT") { return; } - switch (getKey(ev)) { case "s": case "S": diff --git a/templates/releases/build_queue.html b/templates/releases/build_queue.html index 37366aea9..1164a205a 100644 --- a/templates/releases/build_queue.html +++ b/templates/releases/build_queue.html @@ -36,3 +36,91 @@
{%- endblock body -%} + +{%- block javascript -%} + +{%- endblock javascript -%} diff --git a/templates/releases/releases.html b/templates/releases/releases.html index e4c745f4b..5f6ab863a 100644 --- a/templates/releases/releases.html +++ b/templates/releases/releases.html @@ -87,59 +87,30 @@ return String.fromCharCode(ev.charCode || ev.keyCode); } - var active = null; - function handleKey(ev) { + document.getElementById("i-am-feeling-lucky-button").onclick = function () { + var form = document.getElementsByClassName("landing-search-form"); + var input = document.createElement('input'); + input.type = 'hidden'; + input.name = 'i-am-feeling-lucky'; + input.value = 1; + document.getElementsByClassName("landing-search-form")[0].appendChild(input); + return true; + }; + + function handleShortcut(ev) { if (ev.ctrlKey || ev.altKey || ev.metaKey || document.activeElement.tagName === "INPUT") { return; } - - if (ev.which === 40) { // Down arrow - ev.preventDefault(); - if (active === null) { - active = document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li")[0]; - } else if (active.nextElementSibling) { - active.classList.remove("selected"); - active = active.nextElementSibling; - } - active.classList.add("selected"); - } else if (ev.which === 38) { // Up arrow - ev.preventDefault(); - if (active === null) { - active = document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li")[0]; - } else if (active.previousElementSibling) { - active.classList.remove("selected"); - active = active.previousElementSibling; - } - active.classList.add("selected"); - active.focus(); - } else if (ev.which === 13) { // Return - if (active !== null) { - document.location.href = active.getElementsByTagName("a")[0].href; - } - } else { - switch (getKey(ev)) { - case "s": - case "S": - ev.preventDefault(); - document.getElementsByClassName("search-input-nav")[0].focus(); - break; - } + switch (getKey(ev)) { + case "s": + case "S": + ev.preventDefault(); + document.getElementById("search").focus(); + break; } } - document.onkeypress = handleKey; - document.onkeydown = handleKey; - - var crates = Array.prototype.slice.call(document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li")); - for (var i = 0; i < crates.length; ++i) { - crates[i].addEventListener("mouseover", function (event) { - this.classList.remove("selected"); - active = null; - }); - crates[i].addEventListener("mouseout", function (event) { - this.classList.remove("selected"); - active = null; - }); - } + document.onkeypress = handleShortcut; + document.onkeydown = handleShortcut; {%- endblock javascript -%} From 9e2d20399cb11b096fe915b090480af6a7223e74 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Tue, 7 Jul 2020 17:31:23 -0400 Subject: [PATCH 04/24] Revert "Macro'd out the release list, uncow'd some things" This reverts commit 061d1283e9456b5ada43987192f33e54996ebc9c. --- src/web/mod.rs | 6 +- src/web/releases.rs | 5 +- templates/crate/details.html | 129 +++++++++++++++++++++++++++++- templates/macros.html | 45 ----------- templates/rustdoc/navigation.html | 39 ++++++++- 5 files changed, 170 insertions(+), 54 deletions(-) diff --git a/src/web/mod.rs b/src/web/mod.rs index d74d5a92c..af9019a46 100644 --- a/src/web/mod.rs +++ b/src/web/mod.rs @@ -16,7 +16,7 @@ macro_rules! ctry { // This is very ugly, but it makes it impossible to get a type inference error // from this macro let error = $crate::web::ErrorPage { - title: "Internal Server Error", + title: ::std::borrow::Cow::Borrowed("Internal Server Error"), message: ::std::option::Option::Some(::std::borrow::Cow::Owned( ::std::format!("{}", error), )), @@ -44,7 +44,7 @@ macro_rules! cexpect { // This is very ugly, but it makes it impossible to get a type inference error // from this macro let error = $crate::web::ErrorPage { - title: "Internal Server Error", + title: ::std::borrow::Cow::Borrowed("Internal Server Error"), message: None, status: ::iron::status::BadRequest, }; @@ -616,7 +616,7 @@ impl MetaData { #[derive(Debug, Clone, PartialEq, Serialize)] pub(crate) struct ErrorPage { /// The title of the page - pub title: &'static str, + pub title: Cow<'static, str>, /// The error message, displayed as a description pub message: Option>, #[serde(skip)] diff --git a/src/web/releases.rs b/src/web/releases.rs index 0bad8244e..282a238ee 100644 --- a/src/web/releases.rs +++ b/src/web/releases.rs @@ -18,6 +18,7 @@ use postgres::Connection; use router::Router; use serde::Serialize; use serde_json::Value; +use std::borrow::Cow; /// Number of release in home page const RELEASES_IN_HOME: i64 = 15; @@ -659,7 +660,7 @@ pub fn search_handler(req: &mut Request) -> IronResult { #[derive(Debug, Clone, PartialEq, Serialize)] struct ReleaseActivity { - description: &'static str, + description: Cow<'static, str>, activity_data: Value, } @@ -681,7 +682,7 @@ pub fn activity_handler(req: &mut Request) -> IronResult { .map_or(Value::Null, |row| row.get("value")); ReleaseActivity { - description: "Monthly release activity", + description: Cow::Borrowed("Monthly release activity"), activity_data, } .into_response(req) diff --git a/templates/crate/details.html b/templates/crate/details.html index 7db4d6602..1eeabf31c 100644 --- a/templates/crate/details.html +++ b/templates/crate/details.html @@ -96,7 +96,37 @@ @@ -174,4 +204,101 @@ {%- block javascript -%} {# Enable and load Rust and TOML syntax highlighting #} {{ macros::highlight_js(languages=["rust", "ini"]) }} + + {% endblock javascript -%} diff --git a/templates/macros.html b/templates/macros.html index bd6964731..b9b18d6d2 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -75,48 +75,3 @@ Docs.rs {%- endif -%} {% endmacro doc_title %} - -{# - Constructs a list of a crate's releases - * `name` The crate's name as a string - * `releases` A list of crate releases where each release has the following fields: - * `version` A string of the release's version - * `yanked` A boolean of the release's yanked status - * `build_status` A boolean of the crate's build status (true for built, false for failed build) -#} -{% macro releases_list(name, releases) %} - {%- for release in releases -%} - {# The url for the release, `/crate/:name/:version` #} - {%- set release_url = "/crate/" ~ name ~ "/" ~ release.version -%} - {# The release's name and version, `:name-:version` #} - {%- set release_name = name ~ "-" ~ release.version -%} - -
  • - {# If the release has been yanked and failed to build, display a warning #} - {%- if release.yanked and release.build_status -%} - - {{ release.version }} - - - {# If the release is yanked but built, display an warning #} - {%- elif release.yanked and not release.build_status -%} - - {{ release.version }} - - - {# If the release failed to build, display a warning #} - {%- elif release.build_status -%} - - {{ release.version }} - - - {# Otherwise just display the version #} - {%- else -%} - - {{ release.version }} - - {%- endif -%} -
  • - {%- endfor -%} -{% endmacro releases_list %} diff --git a/templates/rustdoc/navigation.html b/templates/rustdoc/navigation.html index c56d1f947..96275c06f 100644 --- a/templates/rustdoc/navigation.html +++ b/templates/rustdoc/navigation.html @@ -135,12 +135,45 @@