Merge branch 'feature/#11' into develop
This commit is contained in:
commit
f2eedbd15d
85
classes/Article.class.js
Normal file
85
classes/Article.class.js
Normal file
|
@ -0,0 +1,85 @@
|
|||
const log = require('color-logs')(true, true, "Article.class.js"),
|
||||
markdown = require('markdown').markdown,
|
||||
promise = require('promise');
|
||||
|
||||
var id,
|
||||
title,
|
||||
author,
|
||||
content,
|
||||
date,
|
||||
img,
|
||||
slug;
|
||||
|
||||
class Article {
|
||||
constructor(id, title, author, date, img, slug){
|
||||
this.setId(id);
|
||||
this.setTitle(title);
|
||||
this.setAuthor(author);
|
||||
this.setDate(date);
|
||||
this.setImg(img);
|
||||
this.setSlug(slug);
|
||||
}
|
||||
|
||||
setId(id){
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
setTitle(title){
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
setAuthor(author){
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
setContent(content){
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
setImg(img){
|
||||
this.img = img;
|
||||
}
|
||||
|
||||
setDate(date){
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
setSlug(slug){
|
||||
this.slug = slug;
|
||||
}
|
||||
|
||||
getId(){
|
||||
return this.id;
|
||||
}
|
||||
|
||||
getTitle(){
|
||||
return this.title;
|
||||
}
|
||||
|
||||
getAuthor(){
|
||||
return this.author;
|
||||
}
|
||||
|
||||
getContent(){
|
||||
return this.content;
|
||||
}
|
||||
|
||||
getDate(){
|
||||
return this.date;
|
||||
}
|
||||
|
||||
getImg(){
|
||||
return this.img;
|
||||
}
|
||||
|
||||
getSlug(){
|
||||
return this.slug;
|
||||
}
|
||||
|
||||
getCompiledContent(){
|
||||
return markdown.toHTML(this.getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = Article;
|
|
@ -3,8 +3,8 @@ const log = require('color-logs')(true, true, "Categorie.class.js");
|
|||
var id,
|
||||
title,
|
||||
uri,
|
||||
description,
|
||||
articles = [];
|
||||
articles,
|
||||
description;
|
||||
|
||||
class Categorie {
|
||||
|
||||
|
@ -19,6 +19,7 @@ class Categorie {
|
|||
this.setTitle(title);
|
||||
this.setUri(uri);
|
||||
this.setDescription(description);
|
||||
this.articles = new Array();
|
||||
}
|
||||
|
||||
setId(id){
|
||||
|
@ -39,10 +40,10 @@ class Categorie {
|
|||
|
||||
/**
|
||||
*
|
||||
* @param {object <Article>} articles : array of article object owned by this categorie
|
||||
* @param {object <Article>} article : array of article object owned by this categorie
|
||||
*/
|
||||
setArticles(articles){
|
||||
this.articles.push(articles);
|
||||
setArticle(article){
|
||||
this.articles.push(article);
|
||||
}
|
||||
|
||||
getId(){
|
||||
|
|
|
@ -4,12 +4,6 @@ const log = require('color-logs')(true, true, "Articles.class.js"),
|
|||
markdown = require('markdown').markdown,
|
||||
fs = require("fs");
|
||||
|
||||
var title,
|
||||
author,
|
||||
content,
|
||||
date,
|
||||
slug;
|
||||
|
||||
class Articles {
|
||||
|
||||
getArticle(categorie, article){
|
|
@ -4,13 +4,15 @@ const log = require('color-logs')(true, true, "Categories.class.js"),
|
|||
promise = require('promise'),
|
||||
dbConnector = require('../../lib/db/'+config.db+"/db.js");
|
||||
fs = require("fs"),
|
||||
Categorie = require('../Categorie.class.js');
|
||||
Categorie = require('../Categorie.class.js');
|
||||
Article = require('../Article.class.js');
|
||||
|
||||
hbs.registerHelper('listArticle', function(tabs, options) {
|
||||
var i = 1;
|
||||
var out = '';
|
||||
for(var x in options['data']['root']){
|
||||
|
||||
for(var x in options['data']['root']){
|
||||
//log.debug(options.fn(options['data']['root'][x]));
|
||||
out = out + "" + options.fn(options['data']['root'][x]) + "";
|
||||
if(i == 3){
|
||||
i= 1;
|
||||
|
@ -94,6 +96,49 @@ class Categories {
|
|||
});
|
||||
}
|
||||
|
||||
getListArticles(categorie){
|
||||
var db = new dbConnector();
|
||||
return db.get({
|
||||
"select" : {
|
||||
"articles" : [
|
||||
"id",
|
||||
"title",
|
||||
"slug",
|
||||
"author",
|
||||
"date",
|
||||
"img"
|
||||
]
|
||||
},
|
||||
"condition" : {
|
||||
"categorie_id" : categorie.getId()
|
||||
},
|
||||
"limit" : ""
|
||||
}).then((result) => {
|
||||
return new Promise((resolve) => {
|
||||
var data = JSON.parse(result);
|
||||
for(var i in data){
|
||||
categorie.setArticle(new Article(data[i].id,data[i].title, data[i].author, data[i].date, data[i].img, data[i].slug))
|
||||
}
|
||||
log.debug(categorie);
|
||||
resolve(this.listArticlesToHTM(categorie));
|
||||
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
listArticlesToHTM(categorie){
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.readFile('./views/articles/list.hbs', 'utf-8', (error, source) => {
|
||||
hbs.registerHelper('articles', (articles) =>{
|
||||
return articles;
|
||||
});
|
||||
var template = hbs.compile(source);
|
||||
var html = template(categorie.getArticles());
|
||||
resolve(html);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {Promise} the list of article
|
||||
|
@ -132,7 +177,7 @@ class Categories {
|
|||
* @param {type} slug : url of categorie
|
||||
* @returns {Promise} the list of article in this categorie
|
||||
*/
|
||||
getListArticles(slug){
|
||||
/*getListArticles(slug){
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.readFile('./views/articles/list.hbs', 'utf-8', (error, source) => {
|
||||
var pathOfArticles = "./ressources/"+slug+"";
|
||||
|
@ -178,7 +223,7 @@ class Categories {
|
|||
});
|
||||
});
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -5,8 +5,9 @@ const express = require("express"),
|
|||
path = require('path'),
|
||||
log = require("color-logs")(true, true, "Router"),
|
||||
Template = require('../classes/Template.class.js'),
|
||||
Articles = require('../classes/Articles.class.js'),
|
||||
Article = require('../classes/Article.class.js'),
|
||||
Categorie = require('../classes/Categorie.class.js'),
|
||||
Articles = require('../classes/Controllers/Articles.class.js'),
|
||||
Categories = require('../classes/Controllers/Categories.class.js');
|
||||
|
||||
var template = new Template();
|
||||
|
@ -62,26 +63,27 @@ router.get("/:uri/", function(req, res){
|
|||
var categories = new Categories();
|
||||
Promise.all([
|
||||
categories.getNav(),
|
||||
categories.getCategorie(req.params.uri)
|
||||
/*categories.getListArticles(req.params.uri),
|
||||
categories.getCategorie(req.params.slug)*/
|
||||
categories.getCategorie(req.params.uri),
|
||||
]).then(data => {
|
||||
var nav = data[0];
|
||||
var categorie = data[1];
|
||||
categories.getListArticles(categorie).then((result) => {
|
||||
log.debug(result)
|
||||
res.setHeader("Content-type", "text/html");
|
||||
var tplData = {
|
||||
"blogName": config.siteTitle,
|
||||
"title": categorie.getTitle() + " - "+config.siteHomeTitle,
|
||||
"nav": nav,
|
||||
"content": result,
|
||||
"disclaimer": ''
|
||||
};
|
||||
res.render('template.hbs', tplData);
|
||||
})
|
||||
/*var content = data[1];
|
||||
var dataCategories = data[2];*/
|
||||
res.setHeader("Content-type", "text/html");
|
||||
var tplData = {
|
||||
"blogName": config.siteTitle,
|
||||
"title": categorie.getTitle() + " - "+config.siteHomeTitle,
|
||||
"nav": nav,
|
||||
"content": '',
|
||||
"disclaimer": ''
|
||||
};
|
||||
res.render('template.hbs', tplData);
|
||||
|
||||
}).catch(err => {
|
||||
res.setHeader("Content-type", "text/plain");
|
||||
log.debug(err);
|
||||
res.end("erreur");
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<nav>
|
||||
|
||||
{{#listNav data}}<div class="navItem"><a href="{{uri}}/">{{title}}</a></div>{{/listNav}}
|
||||
{{#listNav data}}<div class="navItem"><a href="/{{uri}}/">{{title}}</a></div>{{/listNav}}
|
||||
<!--<div class="navItem"><a href="index.html">Accueil</a></div>
|
||||
<div class="navItem"><a href="portfolio.html">Portfolio</a></div>
|
||||
<div class="navItem">Contact</div>-->
|
||||
|
|
Reference in a new issue