Basic cours support #44
3 changed files with 37 additions and 1 deletions
|
@ -13,6 +13,7 @@
|
||||||
- [Blog](#blog)
|
- [Blog](#blog)
|
||||||
- [Projects](#projects)
|
- [Projects](#projects)
|
||||||
- [Contacts](#contacts)
|
- [Contacts](#contacts)
|
||||||
|
- [Courses](#courses)
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
|
@ -204,3 +205,7 @@ Custom project description
|
||||||
- `user` is the username used in the platform
|
- `user` is the username used in the platform
|
||||||
- `description` will be rendered as HTML "title" (text will appear when cursor
|
- `description` will be rendered as HTML "title" (text will appear when cursor
|
||||||
is hover the link)
|
is hover the link)
|
||||||
|
|
||||||
|
## Courses
|
||||||
|
|
||||||
|
Markdown files are stored in `/app/data/cours/`
|
||||||
|
|
|
@ -34,10 +34,14 @@ pub struct FileMetadataPortfolio {
|
||||||
pub language: Option<String>,
|
pub language: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Deserialize, Content, Debug)]
|
||||||
|
pub struct FileMetadataCours {}
|
||||||
|
|
||||||
pub enum TypeFileMetadata {
|
pub enum TypeFileMetadata {
|
||||||
Blog,
|
Blog,
|
||||||
Contact,
|
Contact,
|
||||||
Portfolio,
|
Portfolio,
|
||||||
|
Cours,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Deserialize, Content, Debug)]
|
#[derive(Default, Deserialize, Content, Debug)]
|
||||||
|
@ -45,6 +49,7 @@ pub struct FileMetadata {
|
||||||
pub blog: Option<FileMetadataBlog>,
|
pub blog: Option<FileMetadataBlog>,
|
||||||
pub contact: Option<FileMetadataContact>,
|
pub contact: Option<FileMetadataContact>,
|
||||||
pub portfolio: Option<FileMetadataPortfolio>,
|
pub portfolio: Option<FileMetadataPortfolio>,
|
||||||
|
pub cours: Option<FileMetadataCours>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Content, Debug, Clone)]
|
#[derive(Content, Debug, Clone)]
|
||||||
|
@ -227,6 +232,10 @@ pub fn get_metadata<'a>(root: &'a AstNode<'a>, mtype: TypeFileMetadata) -> FileM
|
||||||
portfolio: Some(deserialize_metadata(text)),
|
portfolio: Some(deserialize_metadata(text)),
|
||||||
..FileMetadata::default()
|
..FileMetadata::default()
|
||||||
},
|
},
|
||||||
|
TypeFileMetadata::Cours => FileMetadata {
|
||||||
|
cours: Some(deserialize_metadata(text)),
|
||||||
|
..FileMetadata::default()
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
_ => None,
|
_ => None,
|
||||||
}) {
|
}) {
|
||||||
|
@ -244,6 +253,10 @@ pub fn get_metadata<'a>(root: &'a AstNode<'a>, mtype: TypeFileMetadata) -> FileM
|
||||||
portfolio: Some(FileMetadataPortfolio::default()),
|
portfolio: Some(FileMetadataPortfolio::default()),
|
||||||
..FileMetadata::default()
|
..FileMetadata::default()
|
||||||
},
|
},
|
||||||
|
TypeFileMetadata::Cours => FileMetadata {
|
||||||
|
cours: Some(FileMetadataCours::default()),
|
||||||
|
..FileMetadata::default()
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
use actix_web::{get, web, Responder};
|
use actix_web::{get, web, Responder};
|
||||||
|
use glob::glob;
|
||||||
use ramhorns::Content;
|
use ramhorns::Content;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
config::Config,
|
config::Config,
|
||||||
misc::utils::{make_kw, Html},
|
misc::{
|
||||||
|
markdown::{read_file, TypeFileMetadata},
|
||||||
|
utils::{make_kw, Html},
|
||||||
|
},
|
||||||
template::{Infos, NavBar},
|
template::{Infos, NavBar},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,6 +19,20 @@ async fn page(config: web::Data<Config>) -> impl Responder {
|
||||||
#[derive(Content, Debug)]
|
#[derive(Content, Debug)]
|
||||||
struct CoursTemplate {
|
struct CoursTemplate {
|
||||||
navbar: NavBar,
|
navbar: NavBar,
|
||||||
|
/* filetree: Truc, */
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get the filetree
|
||||||
|
fn get_filetree() {
|
||||||
|
let cours_dir = "data/cours";
|
||||||
|
glob(&format!("{cours_dir}/*")).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get a page
|
||||||
|
fn get_page(filename: &str) {
|
||||||
|
let cours_dir = "data/cours";
|
||||||
|
|
||||||
|
let post = read_file(&format!("{cours_dir}/{filename}"), TypeFileMetadata::Cours);
|
||||||
}
|
}
|
||||||
|
|
||||||
// #[once(time = 60)]
|
// #[once(time = 60)]
|
||||||
|
|
Loading…
Reference in a new issue