Add default templates
This commit is contained in:
parent
edff79e914
commit
129e693521
|
@ -1,10 +1,12 @@
|
|||
# Changelog
|
||||
|
||||
## 0.2.3 (unreleased)
|
||||
## 0.3.0 (unreleased)
|
||||
|
||||
- Add `get_taxonomy_url` to retrieve the permalink of a tag/category
|
||||
- Fix bug when generating permalinks for taxonomies
|
||||
- Change names of individual taxonomies to be plural (ie `tags/my-tag` instead of `tag/my-tag`)
|
||||
- Update to Tera 0.11
|
||||
- Better UX on first `serve` thanks to some default templates.
|
||||
|
||||
## 0.2.2 (2017-11-01)
|
||||
|
||||
|
|
30
Cargo.lock
generated
30
Cargo.lock
generated
|
@ -54,15 +54,6 @@ dependencies = [
|
|||
"safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.8.0"
|
||||
|
@ -350,7 +341,7 @@ dependencies = [
|
|||
"front_matter 0.1.0",
|
||||
"iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"mount 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"notify 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"site 0.1.0",
|
||||
"staticfile 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term-painter 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -602,7 +593,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "notify"
|
||||
version = "4.0.2"
|
||||
version = "4.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -613,7 +604,7 @@ dependencies = [
|
|||
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"mio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"walkdir 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -1061,7 +1052,7 @@ dependencies = [
|
|||
name = "templates"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"config 0.1.0",
|
||||
"content 0.1.0",
|
||||
"errors 0.1.0",
|
||||
|
@ -1263,15 +1254,6 @@ name = "void"
|
|||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "1.0.7"
|
||||
|
@ -1345,7 +1327,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum backtrace 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8709cc7ec06f6f0ae6c2c7e12f6ed41540781f72b488d83734978295ceae182e"
|
||||
"checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661"
|
||||
"checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9"
|
||||
"checksum base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5032d51da2741729bfdaeb2664d9b8c6d9fd1e2b90715c660b6def36628499c2"
|
||||
"checksum base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c4a342b450b268e1be8036311e2c613d7f8a7ed31214dff1cc3b60852a3168d"
|
||||
"checksum bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e103c8b299b28a9c6990458b7013dc4a8356a9b854c51b9883241f5866fac36e"
|
||||
"checksum bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dead7461c1127cf637931a1e50934eb6eee8bff2f74433ac7909e9afcee04a3"
|
||||
|
@ -1403,7 +1384,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum mount 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32245731923cd096899502fc4c4317cfd09f121e80e73f7f576cf3777a824256"
|
||||
"checksum net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)" = "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"
|
||||
"checksum nix 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bfb3ddedaa14746434a02041940495bf11325c22f6d36125d3bdd56090d50a79"
|
||||
"checksum notify 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "745bdfd0d0764c71525e880c6d7662b721cb5658ddb2feaa71c3193ec359aef8"
|
||||
"checksum notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5c3812da3098f210a0bb440f9c008471a031aa4c1de07a264fdd75456c95a4eb"
|
||||
"checksum num 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525"
|
||||
"checksum num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"
|
||||
"checksum num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"
|
||||
|
@ -1474,7 +1455,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c"
|
||||
"checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d"
|
||||
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||
"checksum walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c66c0b9792f0a765345452775f3adbd28dde9d33f30d13e5dcc5ae17cf6f3780"
|
||||
"checksum walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"
|
||||
"checksum walkdir 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b6d201f4f8998a837196b6de9c73e35af14c992cbb92c4ab641d2c2dce52de"
|
||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
||||
|
|
|
@ -5,7 +5,7 @@ authors = ["Vincent Prouillet <vincent@wearewizards.io>"]
|
|||
|
||||
[dependencies]
|
||||
tera = "0.11.0-beta"
|
||||
base64 = "0.7"
|
||||
base64 = "0.8"
|
||||
lazy_static = "0.2"
|
||||
pulldown-cmark = "0"
|
||||
|
||||
|
|
43
components/utils/src/default_tpl.html
Normal file
43
components/utils/src/default_tpl.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Gutenberg</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Welcome to Gutenberg!</h1>
|
||||
<p>
|
||||
You're seeing this page because we couldn't find a template to render.
|
||||
</p>
|
||||
<p>
|
||||
To modify this page, create a <b>{{filename}}</b> file in the templates directory or
|
||||
<a href="https://www.getgutenberg.io/documentation/themes/installing-and-using-themes/" target="_blank">install a theme</a>.
|
||||
<br>
|
||||
You can find what variables are available in this template in the <a href="{{url}}" target="_blank">documentation</a>.
|
||||
</p>
|
||||
</div>
|
||||
<footer>
|
||||
<a href="https://www.getgutenberg.io/documentation/getting-started/cli-usage/" target="_blank">Get started with Gutenberg</a>
|
||||
</footer>
|
||||
<style>
|
||||
html {
|
||||
line-height: 1.5;
|
||||
}
|
||||
h1 {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.container {
|
||||
font-family: "sans-serif";
|
||||
text-align: center;
|
||||
margin-top: 20vh;
|
||||
padding: 2rem;
|
||||
background: #e9e9e9;
|
||||
}
|
||||
footer {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
|
@ -2,6 +2,20 @@ use tera::{Tera, Context};
|
|||
|
||||
use errors::Result;
|
||||
|
||||
static DEFAULT_TPL: &str = include_str!("default_tpl.html");
|
||||
|
||||
|
||||
macro_rules! render_default_tpl {
|
||||
($filename: expr, $url: expr) => {
|
||||
{
|
||||
let mut context = Context::new();
|
||||
context.add("filename", $filename);
|
||||
context.add("url", $url);
|
||||
Tera::one_off(DEFAULT_TPL, &context, true).map_err(|e| e.into())
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/// Renders the given template with the given context, but also ensures that, if the default file
|
||||
/// is not found, it will look up for the equivalent template for the current theme if there is one.
|
||||
/// Lastly, if it's a default template (index, section or page), it will just return an empty string
|
||||
|
@ -19,11 +33,19 @@ pub fn render_template(name: &str, tera: &Tera, context: &Context, theme: Option
|
|||
.map_err(|e| e.into());
|
||||
}
|
||||
|
||||
if name == "index.html" || name == "section.html" || name == "page.html" {
|
||||
return Ok(String::new());
|
||||
// maybe it's a default one?
|
||||
match name {
|
||||
"index.html" | "section.html" => {
|
||||
render_default_tpl!(name, "https://www.getgutenberg.io/documentation/templates/pages-sections/#section-variables")
|
||||
},
|
||||
"page.html" => {
|
||||
render_default_tpl!(name, "https://www.getgutenberg.io/documentation/templates/pages-sections/#page-variables")
|
||||
},
|
||||
"tag.html" | "tags.html" | "category.html" | "categories.html" => {
|
||||
render_default_tpl!(name, "https://www.getgutenberg.io/documentation/templates/tags-categories/")
|
||||
},
|
||||
_ => bail!("Tried to render `{}` but the template wasn't found", name)
|
||||
}
|
||||
|
||||
bail!("Tried to render `{}` but the template wasn't found", name)
|
||||
}
|
||||
|
||||
|
||||
|
@ -55,7 +77,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn can_rewrite_all_paths_of_theme() {
|
||||
let mut tera = Tera::parse("templates/*.html").unwrap();
|
||||
let mut tera = Tera::parse("test-templates/*.html").unwrap();
|
||||
rewrite_theme_paths(&mut tera, "hyde");
|
||||
// special case to make the test work: we also rename the files to
|
||||
// match the imports
|
||||
|
|
|
@ -57,8 +57,7 @@ pub fn create_new_project(name: &str) -> Result<()> {
|
|||
println!();
|
||||
console::success(&format!("Done! Your site was created in {:?}", canonicalize(path).unwrap()));
|
||||
println!();
|
||||
console::info("Get started by using the built-in server: `gutenberg serve`");
|
||||
println!("There is no built-in theme so you will see a white page.");
|
||||
println!("Visit https://github.com/Keats/gutenberg for the full documentation.");
|
||||
console::info("Get started by moving into the directory and using the built-in server: `gutenberg serve`");
|
||||
println!("Visit https://www.getgutenberg.io for the full documentation.");
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue