Skip to content
Snippets Groups Projects
Commit fa2918f7 authored by Isabella Skořepová's avatar Isabella Skořepová
Browse files

Add pagination and more metadata

metadata: allow override date and author from metadata
format:
[author]
name = "Name"
email = "my@email.com"
[date]
creation = "2015-07-31"
parent c7e671d8
Branches
No related tags found
No related merge requests found
......@@ -42,7 +42,7 @@ var readPageWorker = function(file, articleName, contentDir) {
console.log(articleName+": Failed to parse metadata");
throw e;
}
if(obj.metadata.date) obj.metadata.date = moment(obj.metadata.date);
if(obj.metadata.date && obj.metadata.date.creation) obj.metadata.date.creation = moment(obj.metadata.date.creation);
return obj;
}
module.exports = function(_contentDir) {
......
// Add git commit author and date to metadata
var git = require('nodegit');
var path = require('path');
var moment = require('moment');
var pathToRepo = path.resolve("content");
var getCommits = function(file, cb) {
......@@ -47,15 +48,22 @@ module.exports = function() {
console.log("Newest commit:");
printCommit(newestCommit);
}
article.metadata.date = {
creation: oldestCommit.date(),
modification: newestCommit.date(),
modified: newestCommit !== oldestCommit
}
article.metadata.author = {
name: oldestCommit.author().name(),
email: oldestCommit.author().email()
}
if(article.metadata.date == undefined)
article.metadata.date = {};
if(article.metadata.date.creation == undefined)
article.metadata.date.creation = oldestCommit.date();
article.metadata.date.modification = newestCommit.date();
article.metadata.date.modified = (newestCommit !== oldestCommit);
if(article.metadata.author === undefined)
article.metadata.author = {}
if(article.metadata.author.name == undefined)
article.metadata.author.name = oldestCommit.author().name()
if(article.metadata.author.email == undefined)
article.metadata.author.email = oldestCommit.author().email()
article.commits = commits;
}
......
var nunjucks = require('nunjucks');
var fs = require('fs');
var dateFilter = require('nunjucks-date-filter');
var util = require('util');
var MyLoader = nunjucks.Loader.extend({
fileSystemLoader: {},
......@@ -18,8 +19,33 @@ module.exports = function() {
var tr = this;
var templates = {};
tr.pre = function(cb) {
var env = new nunjucks.Environment(new MyLoader('theme/templates',{watch:true}));
var env = new nunjucks.Environment(new MyLoader('theme/templates',{watch: process.argv[2] !== "compileonly"}));
env.addFilter('date', dateFilter);
env.addFilter('paginationList', function(page, count) {
var curPage = page;
var pages = [];
pages.push(curPage);
for(var i = 0; i < count; i++) {
curPage = curPage.metadata.prevpage;
if(curPage === undefined) break;
pages.unshift(curPage);
}
curPage = page;
for(var i = 0; i < count; i++) {
curPage = curPage.metadata.nextpage;
if(curPage === undefined) break;
pages.push(curPage);
}
return pages;
});
env.addFilter('inspect', function(obj) {
return util.inspect(obj);
});
templates["article"] = env.getTemplate('article');
templates["tag"] = env.getTemplate('tag');
templates["redirect"] = env.getTemplate('redirect');
......
......@@ -34,19 +34,35 @@ module.exports = function() {
var p = 0;
var tagPage;
var prevurl;
var prevpage;
var firstpage;
var lastpage;
tagPageList = [];
pageList.forEach(function(page) {
if(c == 0) {
p++;
if(tagPage !== undefined) {
tagPage.metadata.nexturl = file+"/"+p;
list.addPage(tagPage);
tagPageList.push(tagPage);
}
tagPage = new Page();
if(firstpage === undefined) firstpage = tagPage;
lastpage = tagPage;
tagPage.file = file+"/"+p;
tagPage.type = "tag";
tagPage.metadata.firstpage = firstpage;
tagPage.metadata.prevpage = prevpage;
tagPage.metadata.prevurl = prevurl;
tagPage.metadata.thispage = tagPage;
tagPage.metadata.pagenumber = p;
tagPage.content = new Array();
if(prevpage !== undefined)
prevpage.metadata.nextpage = tagPage;
prevurl = tagPage.file;
prevpage = tagPage;
}
tagPage.content.push(page);
......@@ -54,7 +70,12 @@ module.exports = function() {
c %= tr.linksPerPage;
});
list.addPage(tagPage);
tagPageList.push(tagPage);
tagPageList.forEach(function(tagPage) {
tagPage.metadata.lastpage = lastpage;
});
}
tags.forEach(function(tag) {
generateTagPages("tag/"+tag.url, tagPages[tag.url])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment