diff --git a/public/games/index.html b/public/games/index.html index 4b82f26a4140e0f9cb4ee9828ebbeb73ac5595d9..ebb6c4170d42a24ef67f4b6edd2e9e19a71ef210 100644 --- a/public/games/index.html +++ b/public/games/index.html @@ -4,22 +4,20 @@ <head> <meta charset="utf-8" /> <title>Kuadrado Software | Jeux</title> - <meta name="description" - content="Création de jeux vidéos indépendants. Jeux web, PC et projets en cours de développement" /> + <meta name="description" content="Création de jeux vidéos indépendants. Jeux web, PC et projets en cours de développement"/> <meta name="author" content="Kuadrado Software" /> - <meta name="image" content="https://kuadrado-software.fr/assets/images/game_controller.png" /> + <meta name="image" content="https://kuadrado-software.fr/assets/images/game_controller.png"/> <!-- Open Graph Protocol meta data --> - <meta property="og:title" content="Kuadrado Software | Jeux" /> - <meta property="og:description" - content="Création de jeux vidéos indépendants. Jeux web, PC et projets en cours de développement" /> + <meta property="og:title" content="Kuadrado Software | Jeux"/> + <meta property="og:description" content="Création de jeux vidéos indépendants. Jeux web, PC et projets en cours de développement"/> <meta property="og:type" content="website" /> - <meta property="og:url" content="https://kuadrado-software.fr/games" /> - <meta property="og:image" content="https://kuadrado-software.fr/assets/images/game_controller.png" /> - <meta property="og:image" content="https://kuadrado-software.fr/assets/images/game_studio_banner.png" /> - <meta property="og:image" content="https://kuadrado-software.fr/assets/images/popularization_banner.png" /> - <meta property="twitter:image" content="https://kuadrado-software.fr/assets/images/game_controller.png" /> - <meta property="og:locale" content="fr_FR" /> + <meta property="og:url" content="https://kuadrado-software.fr/games"/> + <meta property="og:image" content="https://kuadrado-software.fr/assets/images/game_controller.png"/> +<meta property="og:image" content="https://kuadrado-software.fr/assets/images/game_studio_banner.png"/> +<meta property="og:image" content="https://kuadrado-software.fr/assets/images/popularization_banner.png"/> + <meta property="twitter:image" content="https://kuadrado-software.fr/assets/images/game_controller.png"/> + <meta property="og:locale" content="fr_FR"/> <meta property="og:site_name" content="Kuadrado Software" /> <!-- English translation not ready yet --> @@ -28,8 +26,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link href="/style/style.css" rel="stylesheet" /> - <script - type="application/ld+json">{"@context":"https://schema.org","type":"WebPage","description":"Création de jeux vidéos indépendants. Jeux web, PC et projets en cours de développement","image":["https://kuadrado-software.fr/assets/images/game_controller.svg","https://kuadrado-software.fr/assets/images/game_controller.png"],"keywords":"gamedev, pixelart, jeux vidéo, création, video games, indépendants, indie gamedev","name":"Kuadrado Software - Jeux","url":"https://kuadrado-software.fr/games"}</script> + <script type="application/ld+json">{"@context":"https://schema.org","type":"WebPage","description":"Création de jeux vidéos indépendants. Jeux web, PC et projets en cours de développement","image":["https://kuadrado-software.fr/assets/images/game_controller.svg","https://kuadrado-software.fr/assets/images/game_controller.png"],"keywords":"gamedev, pixelart, jeux vidéo, création, video games, indépendants, indie gamedev","name":"Kuadrado Software - Jeux","url":"https://kuadrado-software.fr/games"}</script> </head> <!-- The vocab attribute defines the standard vocabulary used for RDFa standard. The DOM may contain properties such as "typeof" and "property" accordinly to the schema.org vocabulary --> diff --git a/src/static_view.rs b/src/static_view.rs index 48a1fdcde8ca15f29762fdfd4ed2ec3d7492083d..b8b393f234fb83b5975bcaff9a77973241aed583 100644 --- a/src/static_view.rs +++ b/src/static_view.rs @@ -15,7 +15,6 @@ enum UpdateSitemapMode { CreateUrl, DeleteUrl, } - pub fn create_static_view(app_state: &AppState, article: &Article) -> Result<(), String> { let view_path = app_state .env @@ -48,27 +47,37 @@ pub fn create_static_view(app_state: &AppState, article: &Article) -> Result<(), art_image_uri = format!("/assets/images/{}", art_image_uri); } + let art_json = serde_json::to_string(&article).unwrap(); + let (locale, title, subtitle, description) = { + ( + &article.locale, + &article.title, + &article.subtitle, + &article.metadata.description, + ) + }; let html = format!( " -<html lang='{}'> +<html lang='{locale}'> <head> <meta charset='UTF-8'> <meta http-equiv='X-UA-Compatible' content='IE=edge'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <meta name='author' content='Kuadrado Software' /> - <meta name='image' content='{}'/> - <meta name='description' content='{}'> + <meta name='image' content='{art_image_uri}'/> + <meta name='description' content='{description}'> <link rel='icon' type='image/svg+xml' href='/favicon.svg' /> - <title>{}</title> + <title>{title}</title> <link href='/style/style.css' rel='stylesheet' /> </head> <body> - <div>{}<div> + <main data='{art_json}'></main> + <h1 style='visibility:hidden;'>{title}</h1> + <h2 style='visibility:hidden;'>{subtitle}</h2> </body> -<script type='text/javascript' src='/games/view.js'></script> +<script type='text/javascript' src='/article-view.js'></script> </html> - ", - article.locale, art_image_uri, article.metadata.description, article.title, article.body, + " ); let f_path = d_path.join("index.html"); diff --git a/website/build.js b/website/build.js index d64b7393c9767f576387a2434b9d403f20090e7b..603c14c9d0657039e0e81617e0319f5c5c702213 100644 --- a/website/build.js +++ b/website/build.js @@ -12,7 +12,10 @@ const _path = require("path"); const parent_dir = _path.join(_dir, ".."); // Handle home page -bundle(`${_dir}/src/main.js`, `${parent_dir}/public/main.js`, { minify: build_minified }) +bundle(`${_dir}/src/main.js`, `${parent_dir}/public/main.js`, { minify: build_minified }); + +// Handle article-view script +bundle(`${_dir}/src/article-view.js`, `${parent_dir}/public/article-view.js`, { minify: build_minified }); // Handle subpages function getPageHtml(pageName, pageMeta) { @@ -196,7 +199,7 @@ function createPages(rootdir, destdir) { createPages(`${fPath}/subpages`, targetDirPath); } else { for (const d of fs.readdirSync(targetDirPath).filter(f => { - return fs.statSync(`${targetDirPath}/${f}`).isDirectory() + return fs.statSync(`${targetDirPath}/${f}`).isDirectory() && !build_conf.protected_dirs.includes(f); })) { deletePageDirectory(`${targetDirPath}/${d}`) } diff --git a/website/config.js b/website/config.js index 864f2cb4454ddfaf32023227a992e6a0e451e089..3bc10b137944f002edfcb51631ac8481e45e4969 100644 --- a/website/config.js +++ b/website/config.js @@ -1,6 +1,6 @@ module.exports = { build: { - protected_dirs: ["assets", "style", "views", "standard"], + protected_dirs: ["assets", "style", "views", "standard", "view"], default_meta_keys: ["title", "description", "image", "open_graph", "json_ld"], }, }; diff --git a/website/src/article-view.js b/website/src/article-view.js new file mode 100644 index 0000000000000000000000000000000000000000..60613f1d18eb43e4a0622fca157a68e5d188513d --- /dev/null +++ b/website/src/article-view.js @@ -0,0 +1,20 @@ +"use strict"; + +const WebPage = require("./lib/web-page"); +const runPage = require("./run-page"); + +class ArticlePage extends WebPage { + constructor() { + super({ id: "article-page" }); + this.article = JSON.parse(document.querySelector("main").getAttribute("data")) + } + + render() { + return { + tag: "h1", + contents: this.article.title, + } + } +} + +runPage(ArticlePage);