wip
This commit is contained in:
parent
d5a30b5951
commit
e6fc26c1fc
2
Rocket.toml
Normal file
2
Rocket.toml
Normal file
@ -0,0 +1,2 @@
|
||||
[debug]
|
||||
static_route = "http://localhost:8001"
|
33
data/cv/ovlach.yaml
Normal file
33
data/cv/ovlach.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
person:
|
||||
name: Ondrej
|
||||
surname: Vlach
|
||||
|
||||
education:
|
||||
- from: 2022
|
||||
to: 2023
|
||||
school: blabla
|
||||
|
||||
|
||||
jobs:
|
||||
- jobtype: FREELANCE
|
||||
from: 20/12/1986
|
||||
to: 21/12/1986
|
||||
company: blabla
|
||||
title: blabla
|
||||
description: blabla
|
||||
languages:
|
||||
- PHP
|
||||
- HTML
|
||||
- CSS
|
||||
- JavaScript
|
||||
- MySQL
|
||||
- Wordpress
|
||||
- Bootstrap
|
||||
|
||||
technologies:
|
||||
- name: PHP
|
||||
techtype: LANGUAGE
|
||||
- name: HTML
|
||||
techtype: LANGUAGE
|
||||
- name: CSS
|
||||
techtype: LANGUAGE
|
36
src/lib.rs
36
src/lib.rs
@ -1,12 +1,40 @@
|
||||
|
||||
use rocket::*;
|
||||
use rocket_dyn_templates::Template;
|
||||
use std::collections::HashMap;
|
||||
|
||||
use rocket::{*, fairing::AdHoc};
|
||||
use rocket_dyn_templates::{Template, tera::Value};
|
||||
use ::serde::Deserialize;
|
||||
|
||||
pub mod routes;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(crate = "rocket::serde")]
|
||||
pub struct PresentationConfig {
|
||||
static_route: String,
|
||||
}
|
||||
|
||||
|
||||
pub fn static_filter(
|
||||
value: &Value,
|
||||
args: &HashMap<String, rocket_dyn_templates::tera::Value>
|
||||
) -> Result<Value, rocket_dyn_templates::tera::Error> {
|
||||
let host = args.get("static_host");
|
||||
return Ok(rocket_dyn_templates::tera::Value::String(format!("{}/{}", host.unwrap().as_str().unwrap(), value.as_str().unwrap()))); // TODO: fix-me here!
|
||||
}
|
||||
|
||||
pub fn rocket_builder() -> Rocket<Build> {
|
||||
rocket::build().attach(
|
||||
Template::fairing()
|
||||
let rocket = rocket::build();
|
||||
//let figment = rocket.figment();
|
||||
// extract the entire config any `Deserialize` value
|
||||
//let config: PresentationConfig = figment.extract().expect("config");
|
||||
|
||||
rocket.attach(
|
||||
Template::try_custom(|engines| {
|
||||
engines.tera.register_filter("static", static_filter);
|
||||
Ok(())
|
||||
})
|
||||
).attach(
|
||||
AdHoc::config::<PresentationConfig>()
|
||||
).mount("/", routes![
|
||||
routes::root::index
|
||||
])
|
||||
|
@ -1,14 +1,18 @@
|
||||
use rocket::get;
|
||||
use rocket::{get, State, config};
|
||||
use rocket_dyn_templates::Template;
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Serialize, Debug)]
|
||||
struct Test {
|
||||
use crate::PresentationConfig;
|
||||
|
||||
#[derive(Serialize, Debug)]
|
||||
struct RootPage {
|
||||
static_host: String,
|
||||
}
|
||||
|
||||
#[get("/")]
|
||||
pub fn index() -> Template {
|
||||
let context = Test {};
|
||||
pub fn index(config: &State<PresentationConfig>) -> Template {
|
||||
let context = RootPage {
|
||||
static_host: config.static_route.clone(),
|
||||
};
|
||||
Template::render("default", &context)
|
||||
}
|
||||
|
85
templates/base.html.tera
Normal file
85
templates/base.html.tera
Normal file
@ -0,0 +1,85 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Material Resume</title>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="crossorigin"/>
|
||||
<link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&family=Roboto:wght@300;400;500;700&display=swap"/>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&family=Roboto:wght@300;400;500;700&display=swap" media="print" onload="this.media='all'"/>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&family=Roboto:wght@300;400;500;700&display=swap"/>
|
||||
</noscript>
|
||||
<link href="{{ "css/font-awesome/css/all.min.css?ver=1.2.1" | static(static_host = static_host) }}" rel="stylesheet">
|
||||
<link href="{{ "css/mdb.min.css?ver=1.2.1" | static(static_host = static_host) }}" rel="stylesheet">
|
||||
<link href="{{ "css/aos.css?ver=1.2.1" | static(static_host = static_host) }}" rel="stylesheet">
|
||||
<link href="{{ "css/main.css?ver=1.2.1" | static(static_host = static_host) }}" rel="stylesheet">
|
||||
<noscript>
|
||||
<style type="text/css">
|
||||
[data-aos] {
|
||||
opacity: 1 !important;
|
||||
transform: translate(0) scale(1) !important;
|
||||
}
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
<body class="bg-light" id="top">
|
||||
<header class="d-print-none">
|
||||
<div class="container text-center text-lg-left">
|
||||
<div class="pt-4 clearfix">
|
||||
<h1 class="site-title mb-0">Walter Patterson</h1>
|
||||
<div class="site-nav">
|
||||
<nav role="navigation">
|
||||
<ul class="nav justify-content-center">
|
||||
<li class="nav-item"><a class="nav-link" href="#about" title="About"><span class="menu-title">About</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#skills" title="Skills"><span class="menu-title">Skills</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#experience" title="Experience"><span class="menu-title">Experience</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#education" title="Education"><span class="menu-title">Education</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#portfolio" title="Portfolio"><span class="menu-title">Portfolio</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#references" title="References"><span class="menu-title">References</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#contact" title="Contact"><span class="menu-title">Contact</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{% block content %} {% endblock content %}
|
||||
<footer class="pt-4 pb-4 text-muted text-center d-print-none">
|
||||
<div class="container">
|
||||
<div class="my-3">
|
||||
<div class="h4">Walter Patterson</div>
|
||||
<div class="footer-nav">
|
||||
<nav role="navigation">
|
||||
<ul class="nav justify-content-center">
|
||||
<li class="nav-item"><a class="nav-link" href="https://twitter.com/templateflip" title="Twitter"><i class="fab fa-twitter"></i><span class="menu-title sr-only">Twitter</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://www.facebook.com/templateflip" title="Facebook"><i class="fab fa-facebook"></i><span class="menu-title sr-only">Facebook</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://www.instagram.com/templateflip" title="Instagram"><i class="fab fa-instagram"></i><span class="menu-title sr-only">Instagram</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://github.com/templateflip" title="Github"><i class="fab fa-github"></i><span class="menu-title sr-only">Github</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-small">
|
||||
<div class="mb-1">© Material Resume. All rights reserved.</div>
|
||||
<div>Design - <a href="https://templateflip.com/" target="_blank">TemplateFlip</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="{{ "scripts/mdb.min.js?ver=1.2.1" | static(static_host = static_host) }}"></script>
|
||||
<script src="{{ "scripts/aos.js?ver=1.2.1" | static(static_host = static_host) }}"></script>
|
||||
<script src="{{ "scripts/main.js?ver=1.2.1" | static(static_host = static_host) }}"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,63 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Material Resume</title>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="crossorigin"/>
|
||||
<link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&family=Roboto:wght@300;400;500;700&display=swap"/>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&family=Roboto:wght@300;400;500;700&display=swap" media="print" onload="this.media='all'"/>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&family=Roboto:wght@300;400;500;700&display=swap"/>
|
||||
</noscript>
|
||||
<link href="css/font-awesome/css/all.min.css?ver=1.2.1" rel="stylesheet">
|
||||
<link href="css/mdb.min.css?ver=1.2.1" rel="stylesheet">
|
||||
<link href="css/aos.css?ver=1.2.1" rel="stylesheet">
|
||||
<link href="css/main.css?ver=1.2.1" rel="stylesheet">
|
||||
<noscript>
|
||||
<style type="text/css">
|
||||
[data-aos] {
|
||||
opacity: 1 !important;
|
||||
transform: translate(0) scale(1) !important;
|
||||
}
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
<body class="bg-light" id="top">
|
||||
<header class="d-print-none">
|
||||
<div class="container text-center text-lg-left">
|
||||
<div class="pt-4 clearfix">
|
||||
<h1 class="site-title mb-0">Walter Patterson</h1>
|
||||
<div class="site-nav">
|
||||
<nav role="navigation">
|
||||
<ul class="nav justify-content-center">
|
||||
<li class="nav-item"><a class="nav-link" href="#about" title="About"><span class="menu-title">About</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#skills" title="Skills"><span class="menu-title">Skills</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#experience" title="Experience"><span class="menu-title">Experience</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#education" title="Education"><span class="menu-title">Education</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#portfolio" title="Portfolio"><span class="menu-title">Portfolio</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#references" title="References"><span class="menu-title">References</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="#contact" title="Contact"><span class="menu-title">Contact</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{% extends "base" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="page-content">
|
||||
<div class="container">
|
||||
<div class="resume-container">
|
||||
<div class="shadow-1-strong bg-white my-5" id="intro">
|
||||
<div class="bg-info text-white">
|
||||
<div class="cover bg-image"><img src="images/header-background.jpg"/>
|
||||
<div class="cover bg-image"><img src="{{ "images/header-background.jpg" | static(static_host = static_host) }}" />
|
||||
<div class="mask" style="background-color: rgba(0, 0, 0, 0.7);backdrop-filter: blur(2px);">
|
||||
<div class="text-center p-5">
|
||||
<div class="avatar p-1"><img class="img-thumbnail shadow-2-strong" src="images/avatar.jpg" width="160" height="160"/></div>
|
||||
@ -351,33 +300,4 @@
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
<footer class="pt-4 pb-4 text-muted text-center d-print-none">
|
||||
<div class="container">
|
||||
<div class="my-3">
|
||||
<div class="h4">Walter Patterson</div>
|
||||
<div class="footer-nav">
|
||||
<nav role="navigation">
|
||||
<ul class="nav justify-content-center">
|
||||
<li class="nav-item"><a class="nav-link" href="https://twitter.com/templateflip" title="Twitter"><i class="fab fa-twitter"></i><span class="menu-title sr-only">Twitter</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://www.facebook.com/templateflip" title="Facebook"><i class="fab fa-facebook"></i><span class="menu-title sr-only">Facebook</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://www.instagram.com/templateflip" title="Instagram"><i class="fab fa-instagram"></i><span class="menu-title sr-only">Instagram</span></a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="https://github.com/templateflip" title="Github"><i class="fab fa-github"></i><span class="menu-title sr-only">Github</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-small">
|
||||
<div class="mb-1">© Material Resume. All rights reserved.</div>
|
||||
<div>Design - <a href="https://templateflip.com/" target="_blank">TemplateFlip</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="scripts/mdb.min.js?ver=1.2.1"></script>
|
||||
<script src="scripts/aos.js?ver=1.2.1"></script>
|
||||
<script src="scripts/main.js?ver=1.2.1"></script>
|
||||
</body>
|
||||
</html>
|
||||
{% endblock content %}
|
Loading…
Reference in New Issue
Block a user