First draft working
This commit is contained in:
15
src/index.py
15
src/index.py
@@ -8,7 +8,6 @@ import projects
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
print('blah')
|
||||
return render_template('index.html')
|
||||
|
||||
@app.route('/error/<code>')
|
||||
@@ -23,15 +22,15 @@ def error(code):
|
||||
505: 'HTTP Version Not Supported'
|
||||
}
|
||||
error_desc = {
|
||||
400: 'Sorry, we didn\'t understand your request.',
|
||||
400: 'Sorry, I didn\'t understand your request.',
|
||||
403: 'Sorry, you aren\'t allowed to view this page.',
|
||||
404: 'Sorry, that page doesn\'t exist.',
|
||||
418: 'I can\'t brew coffee as I am, in fact, a teapot.',
|
||||
500: 'Something went wrong on our end.',
|
||||
503: 'Our website is experiencing some issues and will be back shortly.',
|
||||
505: 'Your browser tried to use a HTTP version we don\'t support. Check it is up to date.'
|
||||
500: 'Something went wrong on my end.',
|
||||
503: 'My website is experiencing some issues and will be back shortly.',
|
||||
505: 'Your browser tried to use a HTTP version I don\'t support. Check it is up to date.'
|
||||
}
|
||||
|
||||
return render_template('error.html', code=code,
|
||||
description=error_definitions.get(int(code)),
|
||||
long_description=error_desc.get(int(code)))
|
||||
return render_template('error.html',
|
||||
error=f'{code}: {error_definitions.get(int(code))}',
|
||||
description=error_desc.get(int(code)))
|
||||
|
@@ -55,17 +55,34 @@ def projects():
|
||||
reverse=True
|
||||
)
|
||||
|
||||
with open(path.join(md_directory, 'categories.json')) as categories_file:
|
||||
categories = json.load(categories_file)
|
||||
if len(articles_to_return) < 1:
|
||||
return render_template('error.html',
|
||||
error='There\'s nothing here... yet.',
|
||||
description='I\'m still working on this page. Check back soon for some content.')
|
||||
try:
|
||||
with open(path.join(md_directory, 'categories.json')) as categories_file:
|
||||
categories = json.load(categories_file)
|
||||
except FileNotFoundError:
|
||||
return render_template('error.html',
|
||||
error='There\'s nothing here... yet.',
|
||||
description='I\'m still working on this page. Check back soon for some content.')
|
||||
|
||||
return render_template('projects.html', articles=articles_to_return, all_categories=categories, title='Projects', description='A selection of projects I\'ve been involved in')
|
||||
return render_template('projects.html',
|
||||
articles=articles_to_return,
|
||||
all_categories=categories,
|
||||
title='Projects',
|
||||
description='A selection of projects I\'ve been involved in')
|
||||
|
||||
@app.route('/projects/category/<category>/')
|
||||
def category(category):
|
||||
with open(path.join(md_directory, 'categories.json')) as categories_file:
|
||||
categories = json.load(categories_file)
|
||||
print(categories)
|
||||
the_category = categories.get(category)
|
||||
try:
|
||||
with open(path.join(md_directory, 'categories.json')) as categories_file:
|
||||
categories = json.load(categories_file)
|
||||
the_category = categories.get(category)
|
||||
except FileNotFoundError:
|
||||
return render_template('error.html',
|
||||
error='There\'s nothing here... yet.',
|
||||
description='I\'m still working on this page. Check back soon for some content.')
|
||||
|
||||
if the_category is None:
|
||||
return Response(status=404)
|
||||
@@ -77,6 +94,11 @@ def category(category):
|
||||
reverse=True
|
||||
)
|
||||
|
||||
if len(articles_to_return) < 1:
|
||||
return render_template('error.html',
|
||||
error='There\'s nothing here... yet.',
|
||||
description='I\'m still working on this page. Check back soon for some content.')
|
||||
|
||||
return render_template('projects.html', articles=articles_to_return,
|
||||
title=the_category['title'],
|
||||
description=the_category['long_description'],
|
||||
@@ -87,9 +109,6 @@ def category(category):
|
||||
@app.route('/projects/<article>')
|
||||
def article(article):
|
||||
articles = get_by_meta_key(md_directory, 'id', article)
|
||||
print(articles)
|
||||
for i in articles:
|
||||
print(i.metadata)
|
||||
|
||||
if len(articles) == 0:
|
||||
return Response(status=404)
|
||||
@@ -97,8 +116,9 @@ def article(article):
|
||||
return Response(status=500)
|
||||
|
||||
the_article = articles[0]
|
||||
return render_template('article.html', post=markdown(the_article.content), metadata=the_article.metadata,
|
||||
pageName=f'{the_article.metadata["title"]} - ')
|
||||
return render_template('article.html', post=markdown(the_article.content),
|
||||
metadata=the_article.metadata,
|
||||
page_title=f'{the_article.metadata["title"]} - ')
|
||||
|
||||
@app.route('/projects/image/<image>')
|
||||
def image(image):
|
||||
|
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"software": {
|
||||
"title": "Software",
|
||||
"description": "Projects involving software of some kind",
|
||||
"long_description": "Projects involving software of some kind"
|
||||
},
|
||||
"racing": {
|
||||
"title": "Racing",
|
||||
"description": "Projects to do with motorsport",
|
||||
"long_description": "Projects to do with motorsport"
|
||||
}
|
||||
}
|
@@ -1,26 +0,0 @@
|
||||
---
|
||||
id: software_and_racing
|
||||
title: "Software and Racing"
|
||||
date: 2000-07-13
|
||||
categories: [software, racing]
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eu tortor pellentesque, hendrerit elit feugiat, lobortis urna. Donec porttitor urna vitae augue scelerisque, sit amet maximus quam blandit. Quisque et diam ut ante tempus placerat. Ut pretium urna sollicitudin egestas mattis. Praesent eu arcu et ex maximus posuere pharetra bibendum dolor. Pellentesque id bibendum quam. Curabitur sapien tellus, vulputate a diam vitae, ultrices lobortis elit. Praesent sodales arcu magna, et commodo mi euismod in.
|
||||
|
||||
Vivamus pellentesque molestie arcu, a varius risus cursus eget. Donec cursus massa quis pulvinar tincidunt. Fusce dignissim mi ac ultrices sagittis. Vestibulum aliquet nulla vel ex mattis porta. Praesent vitae lacus eu tortor tempor venenatis. Nam at ipsum in magna tristique tincidunt. Aliquam feugiat pharetra bibendum. Praesent vitae erat sed lorem congue scelerisque vel ut velit. Phasellus quis sapien ultricies, blandit neque nec, sollicitudin dolor. Aliquam ultricies iaculis dapibus.
|
||||
|
||||
Quisque quis auctor tortor, tincidunt bibendum erat. Curabitur justo nulla, ultrices at velit vel, interdum iaculis libero. Vestibulum semper urna nibh, vitae iaculis dui mollis a. Quisque eget placerat massa. Vivamus vel nisl sit amet nibh ultricies egestas hendrerit a est. In finibus lacinia sapien. Etiam id erat dolor.
|
||||
|
||||
Suspendisse tincidunt leo placerat, elementum nunc id, sagittis lorem. Praesent lectus mi, facilisis sed mauris et, imperdiet sagittis massa. Proin ultrices eros vel elit convallis, ut fermentum neque porta. Praesent sed ullamcorper leo, id dapibus mi. Pellentesque vitae mauris dolor. Suspendisse elementum, odio id tincidunt accumsan, ipsum sem fringilla metus, quis ultrices est est ac dolor. Integer tempus, sem rhoncus consectetur tristique, metus purus sodales leo, eget facilisis quam nunc sit amet neque. Nulla luctus mattis tempor. Sed varius sapien ac erat scelerisque sagittis. Ut augue nunc, vulputate vitae elementum eget, ornare vitae sem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas magna neque, efficitur sed pharetra egestas, convallis vel augue. Quisque eu lacinia neque, id ultrices felis. Nunc semper vulputate metus, eget volutpat lectus volutpat eu.
|
||||
|
||||
Praesent mauris sem, eleifend nec ultrices ut, pretium sed massa. Duis faucibus tortor ut dignissim sagittis. Sed odio massa, vulputate eu urna sit amet, tristique fringilla enim. Cras et augue sit amet tortor facilisis pharetra. Fusce eget malesuada sapien. Praesent ultrices sed augue id ornare. Donec eu vestibulum lectus. Ut sed tempor mi. Mauris cursus venenatis fermentum.
|
||||
|
||||
Nunc vulputate auctor enim ut gravida. Proin a suscipit eros. Nunc convallis auctor purus, ut tincidunt lectus euismod et. Duis mattis id leo ac lacinia. Nam ullamcorper metus ullamcorper, commodo ipsum a, rutrum massa. Nam mattis maximus dolor a sagittis. Pellentesque tincidunt ligula nec tortor bibendum, et lobortis massa volutpat. Nulla faucibus aliquet orci, id semper arcu. Mauris facilisis tortor congue, hendrerit risus et, imperdiet ligula. Duis a ligula tempor quam volutpat commodo eu nec nisl. Cras feugiat ornare nisl vel aliquam.
|
||||
|
||||
Quisque consectetur erat lorem, id condimentum mauris vehicula id. Nullam tempus bibendum arcu et tristique. Sed consequat, justo a efficitur feugiat, sapien diam pharetra eros, id commodo augue leo rutrum lectus. Duis aliquet mauris sed odio dapibus, a elementum ante tincidunt. Nulla dictum ultrices posuere. Praesent massa augue, placerat eleifend imperdiet vitae, consectetur non odio. Sed eget pulvinar est. Aenean id varius lorem.
|
||||
|
||||
Vivamus eleifend tellus nec blandit volutpat. Maecenas tempor lorem vel nunc fringilla, eget commodo ipsum lacinia. Morbi elit diam, tincidunt sit amet risus et, eleifend convallis quam. Nunc tempor rhoncus posuere. Pellentesque odio turpis, efficitur eget felis sed, fringilla gravida magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer ipsum neque, varius ac tempor at, dapibus vel tortor. Sed a augue ultricies leo eleifend cursus nec a augue. Donec et elit velit. Mauris sem magna, ultrices sed pulvinar semper, vehicula hendrerit velit. Donec et lorem erat. Sed lobortis ligula vel massa malesuada blandit nec id mauris.
|
||||
|
||||
Ut ullamcorper erat felis, vitae faucibus lorem tempus non. Donec ac nunc dapibus, vehicula turpis non, tincidunt velit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus quam nibh, feugiat non nunc eget, congue iaculis ex. In vulputate ligula tempus, rhoncus mi ac, scelerisque nibh. Donec nec libero vitae purus blandit egestas. Sed vitae metus ut massa posuere sollicitudin. Ut iaculis eu sem at accumsan. Ut sed tellus pretium, tincidunt dolor sed, pretium quam. Donec ultrices, risus ornare convallis facilisis, augue nibh maximus lacus, vel laoreet ligula diam sit amet tellus. Vestibulum eget nibh nec orci maximus volutpat quis vitae justo. Pellentesque vehicula, ante varius condimentum suscipit, ligula est placerat diam, elementum cursus orci tortor et nisl. Nulla ac rutrum nisi. Suspendisse nisi ipsum, bibendum nec sem quis, fermentum tincidunt libero. Ut ligula dolor, tincidunt a eros rhoncus, rhoncus faucibus risus. Sed tincidunt risus quis lorem mattis mattis.
|
||||
|
||||
Pellentesque elementum, metus id interdum lobortis, libero tortor consequat turpis, quis aliquam nisi ligula a magna. Aenean nec aliquet lorem. Aliquam feugiat viverra tellus ut congue. Morbi a fermentum neque. Nulla facilisi. Maecenas consectetur tincidunt diam, non aliquet lorem tempor vestibulum. Morbi cursus, tellus eget congue ultricies, dolor dui porta ipsum, vel tincidunt nisi eros sed dolor. Fusce ut metus semper, malesuada erat a, tempus diam. Quisque ut pellentesque lorem, ut sodales augue. Proin bibendum consectetur ex, vitae lobortis erat sagittis nec.
|
@@ -1,26 +0,0 @@
|
||||
---
|
||||
id: racing
|
||||
title: "Racing"
|
||||
date: 2000-07-14
|
||||
categories: [racing]
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eu tortor pellentesque, hendrerit elit feugiat, lobortis urna. Donec porttitor urna vitae augue scelerisque, sit amet maximus quam blandit. Quisque et diam ut ante tempus placerat. Ut pretium urna sollicitudin egestas mattis. Praesent eu arcu et ex maximus posuere pharetra bibendum dolor. Pellentesque id bibendum quam. Curabitur sapien tellus, vulputate a diam vitae, ultrices lobortis elit. Praesent sodales arcu magna, et commodo mi euismod in.
|
||||
|
||||
Vivamus pellentesque molestie arcu, a varius risus cursus eget. Donec cursus massa quis pulvinar tincidunt. Fusce dignissim mi ac ultrices sagittis. Vestibulum aliquet nulla vel ex mattis porta. Praesent vitae lacus eu tortor tempor venenatis. Nam at ipsum in magna tristique tincidunt. Aliquam feugiat pharetra bibendum. Praesent vitae erat sed lorem congue scelerisque vel ut velit. Phasellus quis sapien ultricies, blandit neque nec, sollicitudin dolor. Aliquam ultricies iaculis dapibus.
|
||||
|
||||
Quisque quis auctor tortor, tincidunt bibendum erat. Curabitur justo nulla, ultrices at velit vel, interdum iaculis libero. Vestibulum semper urna nibh, vitae iaculis dui mollis a. Quisque eget placerat massa. Vivamus vel nisl sit amet nibh ultricies egestas hendrerit a est. In finibus lacinia sapien. Etiam id erat dolor.
|
||||
|
||||
Suspendisse tincidunt leo placerat, elementum nunc id, sagittis lorem. Praesent lectus mi, facilisis sed mauris et, imperdiet sagittis massa. Proin ultrices eros vel elit convallis, ut fermentum neque porta. Praesent sed ullamcorper leo, id dapibus mi. Pellentesque vitae mauris dolor. Suspendisse elementum, odio id tincidunt accumsan, ipsum sem fringilla metus, quis ultrices est est ac dolor. Integer tempus, sem rhoncus consectetur tristique, metus purus sodales leo, eget facilisis quam nunc sit amet neque. Nulla luctus mattis tempor. Sed varius sapien ac erat scelerisque sagittis. Ut augue nunc, vulputate vitae elementum eget, ornare vitae sem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas magna neque, efficitur sed pharetra egestas, convallis vel augue. Quisque eu lacinia neque, id ultrices felis. Nunc semper vulputate metus, eget volutpat lectus volutpat eu.
|
||||
|
||||
Praesent mauris sem, eleifend nec ultrices ut, pretium sed massa. Duis faucibus tortor ut dignissim sagittis. Sed odio massa, vulputate eu urna sit amet, tristique fringilla enim. Cras et augue sit amet tortor facilisis pharetra. Fusce eget malesuada sapien. Praesent ultrices sed augue id ornare. Donec eu vestibulum lectus. Ut sed tempor mi. Mauris cursus venenatis fermentum.
|
||||
|
||||
Nunc vulputate auctor enim ut gravida. Proin a suscipit eros. Nunc convallis auctor purus, ut tincidunt lectus euismod et. Duis mattis id leo ac lacinia. Nam ullamcorper metus ullamcorper, commodo ipsum a, rutrum massa. Nam mattis maximus dolor a sagittis. Pellentesque tincidunt ligula nec tortor bibendum, et lobortis massa volutpat. Nulla faucibus aliquet orci, id semper arcu. Mauris facilisis tortor congue, hendrerit risus et, imperdiet ligula. Duis a ligula tempor quam volutpat commodo eu nec nisl. Cras feugiat ornare nisl vel aliquam.
|
||||
|
||||
Quisque consectetur erat lorem, id condimentum mauris vehicula id. Nullam tempus bibendum arcu et tristique. Sed consequat, justo a efficitur feugiat, sapien diam pharetra eros, id commodo augue leo rutrum lectus. Duis aliquet mauris sed odio dapibus, a elementum ante tincidunt. Nulla dictum ultrices posuere. Praesent massa augue, placerat eleifend imperdiet vitae, consectetur non odio. Sed eget pulvinar est. Aenean id varius lorem.
|
||||
|
||||
Vivamus eleifend tellus nec blandit volutpat. Maecenas tempor lorem vel nunc fringilla, eget commodo ipsum lacinia. Morbi elit diam, tincidunt sit amet risus et, eleifend convallis quam. Nunc tempor rhoncus posuere. Pellentesque odio turpis, efficitur eget felis sed, fringilla gravida magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer ipsum neque, varius ac tempor at, dapibus vel tortor. Sed a augue ultricies leo eleifend cursus nec a augue. Donec et elit velit. Mauris sem magna, ultrices sed pulvinar semper, vehicula hendrerit velit. Donec et lorem erat. Sed lobortis ligula vel massa malesuada blandit nec id mauris.
|
||||
|
||||
Ut ullamcorper erat felis, vitae faucibus lorem tempus non. Donec ac nunc dapibus, vehicula turpis non, tincidunt velit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus quam nibh, feugiat non nunc eget, congue iaculis ex. In vulputate ligula tempus, rhoncus mi ac, scelerisque nibh. Donec nec libero vitae purus blandit egestas. Sed vitae metus ut massa posuere sollicitudin. Ut iaculis eu sem at accumsan. Ut sed tellus pretium, tincidunt dolor sed, pretium quam. Donec ultrices, risus ornare convallis facilisis, augue nibh maximus lacus, vel laoreet ligula diam sit amet tellus. Vestibulum eget nibh nec orci maximus volutpat quis vitae justo. Pellentesque vehicula, ante varius condimentum suscipit, ligula est placerat diam, elementum cursus orci tortor et nisl. Nulla ac rutrum nisi. Suspendisse nisi ipsum, bibendum nec sem quis, fermentum tincidunt libero. Ut ligula dolor, tincidunt a eros rhoncus, rhoncus faucibus risus. Sed tincidunt risus quis lorem mattis mattis.
|
||||
|
||||
Pellentesque elementum, metus id interdum lobortis, libero tortor consequat turpis, quis aliquam nisi ligula a magna. Aenean nec aliquet lorem. Aliquam feugiat viverra tellus ut congue. Morbi a fermentum neque. Nulla facilisi. Maecenas consectetur tincidunt diam, non aliquet lorem tempor vestibulum. Morbi cursus, tellus eget congue ultricies, dolor dui porta ipsum, vel tincidunt nisi eros sed dolor. Fusce ut metus semper, malesuada erat a, tempus diam. Quisque ut pellentesque lorem, ut sodales augue. Proin bibendum consectetur ex, vitae lobortis erat sagittis nec.
|
@@ -1,26 +0,0 @@
|
||||
---
|
||||
id: software
|
||||
title: "Software"
|
||||
date: 2000-07-15
|
||||
categories: [software]
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eu tortor pellentesque, hendrerit elit feugiat, lobortis urna. Donec porttitor urna vitae augue scelerisque, sit amet maximus quam blandit. Quisque et diam ut ante tempus placerat. Ut pretium urna sollicitudin egestas mattis. Praesent eu arcu et ex maximus posuere pharetra bibendum dolor. Pellentesque id bibendum quam. Curabitur sapien tellus, vulputate a diam vitae, ultrices lobortis elit. Praesent sodales arcu magna, et commodo mi euismod in.
|
||||
|
||||
Vivamus pellentesque molestie arcu, a varius risus cursus eget. Donec cursus massa quis pulvinar tincidunt. Fusce dignissim mi ac ultrices sagittis. Vestibulum aliquet nulla vel ex mattis porta. Praesent vitae lacus eu tortor tempor venenatis. Nam at ipsum in magna tristique tincidunt. Aliquam feugiat pharetra bibendum. Praesent vitae erat sed lorem congue scelerisque vel ut velit. Phasellus quis sapien ultricies, blandit neque nec, sollicitudin dolor. Aliquam ultricies iaculis dapibus.
|
||||
|
||||
Quisque quis auctor tortor, tincidunt bibendum erat. Curabitur justo nulla, ultrices at velit vel, interdum iaculis libero. Vestibulum semper urna nibh, vitae iaculis dui mollis a. Quisque eget placerat massa. Vivamus vel nisl sit amet nibh ultricies egestas hendrerit a est. In finibus lacinia sapien. Etiam id erat dolor.
|
||||
|
||||
Suspendisse tincidunt leo placerat, elementum nunc id, sagittis lorem. Praesent lectus mi, facilisis sed mauris et, imperdiet sagittis massa. Proin ultrices eros vel elit convallis, ut fermentum neque porta. Praesent sed ullamcorper leo, id dapibus mi. Pellentesque vitae mauris dolor. Suspendisse elementum, odio id tincidunt accumsan, ipsum sem fringilla metus, quis ultrices est est ac dolor. Integer tempus, sem rhoncus consectetur tristique, metus purus sodales leo, eget facilisis quam nunc sit amet neque. Nulla luctus mattis tempor. Sed varius sapien ac erat scelerisque sagittis. Ut augue nunc, vulputate vitae elementum eget, ornare vitae sem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas magna neque, efficitur sed pharetra egestas, convallis vel augue. Quisque eu lacinia neque, id ultrices felis. Nunc semper vulputate metus, eget volutpat lectus volutpat eu.
|
||||
|
||||
Praesent mauris sem, eleifend nec ultrices ut, pretium sed massa. Duis faucibus tortor ut dignissim sagittis. Sed odio massa, vulputate eu urna sit amet, tristique fringilla enim. Cras et augue sit amet tortor facilisis pharetra. Fusce eget malesuada sapien. Praesent ultrices sed augue id ornare. Donec eu vestibulum lectus. Ut sed tempor mi. Mauris cursus venenatis fermentum.
|
||||
|
||||
Nunc vulputate auctor enim ut gravida. Proin a suscipit eros. Nunc convallis auctor purus, ut tincidunt lectus euismod et. Duis mattis id leo ac lacinia. Nam ullamcorper metus ullamcorper, commodo ipsum a, rutrum massa. Nam mattis maximus dolor a sagittis. Pellentesque tincidunt ligula nec tortor bibendum, et lobortis massa volutpat. Nulla faucibus aliquet orci, id semper arcu. Mauris facilisis tortor congue, hendrerit risus et, imperdiet ligula. Duis a ligula tempor quam volutpat commodo eu nec nisl. Cras feugiat ornare nisl vel aliquam.
|
||||
|
||||
Quisque consectetur erat lorem, id condimentum mauris vehicula id. Nullam tempus bibendum arcu et tristique. Sed consequat, justo a efficitur feugiat, sapien diam pharetra eros, id commodo augue leo rutrum lectus. Duis aliquet mauris sed odio dapibus, a elementum ante tincidunt. Nulla dictum ultrices posuere. Praesent massa augue, placerat eleifend imperdiet vitae, consectetur non odio. Sed eget pulvinar est. Aenean id varius lorem.
|
||||
|
||||
Vivamus eleifend tellus nec blandit volutpat. Maecenas tempor lorem vel nunc fringilla, eget commodo ipsum lacinia. Morbi elit diam, tincidunt sit amet risus et, eleifend convallis quam. Nunc tempor rhoncus posuere. Pellentesque odio turpis, efficitur eget felis sed, fringilla gravida magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer ipsum neque, varius ac tempor at, dapibus vel tortor. Sed a augue ultricies leo eleifend cursus nec a augue. Donec et elit velit. Mauris sem magna, ultrices sed pulvinar semper, vehicula hendrerit velit. Donec et lorem erat. Sed lobortis ligula vel massa malesuada blandit nec id mauris.
|
||||
|
||||
Ut ullamcorper erat felis, vitae faucibus lorem tempus non. Donec ac nunc dapibus, vehicula turpis non, tincidunt velit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus quam nibh, feugiat non nunc eget, congue iaculis ex. In vulputate ligula tempus, rhoncus mi ac, scelerisque nibh. Donec nec libero vitae purus blandit egestas. Sed vitae metus ut massa posuere sollicitudin. Ut iaculis eu sem at accumsan. Ut sed tellus pretium, tincidunt dolor sed, pretium quam. Donec ultrices, risus ornare convallis facilisis, augue nibh maximus lacus, vel laoreet ligula diam sit amet tellus. Vestibulum eget nibh nec orci maximus volutpat quis vitae justo. Pellentesque vehicula, ante varius condimentum suscipit, ligula est placerat diam, elementum cursus orci tortor et nisl. Nulla ac rutrum nisi. Suspendisse nisi ipsum, bibendum nec sem quis, fermentum tincidunt libero. Ut ligula dolor, tincidunt a eros rhoncus, rhoncus faucibus risus. Sed tincidunt risus quis lorem mattis mattis.
|
||||
|
||||
Pellentesque elementum, metus id interdum lobortis, libero tortor consequat turpis, quis aliquam nisi ligula a magna. Aenean nec aliquet lorem. Aliquam feugiat viverra tellus ut congue. Morbi a fermentum neque. Nulla facilisi. Maecenas consectetur tincidunt diam, non aliquet lorem tempor vestibulum. Morbi cursus, tellus eget congue ultricies, dolor dui porta ipsum, vel tincidunt nisi eros sed dolor. Fusce ut metus semper, malesuada erat a, tempus diam. Quisque ut pellentesque lorem, ut sodales augue. Proin bibendum consectetur ex, vitae lobortis erat sagittis nec.
|
@@ -52,7 +52,6 @@
|
||||
#top-nav{
|
||||
float: right;
|
||||
width: fit-content;
|
||||
padding-top: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
@@ -128,6 +128,7 @@ a{
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding-bottom: 30px;
|
||||
padding-top: 20px
|
||||
}
|
||||
|
||||
#top-nav>a{
|
||||
@@ -149,4 +150,21 @@ a{
|
||||
|
||||
#error{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#project-main{
|
||||
padding: 0 10px 0 10px;
|
||||
min-height: 65vh;
|
||||
}
|
||||
|
||||
.project-text{
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.article-category{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.article-category:hover{
|
||||
text-decoration: underline;
|
||||
}
|
@@ -2,9 +2,9 @@
|
||||
<main>
|
||||
<div id="error-container">
|
||||
<div id='error'>
|
||||
<h2>{{ code }}: {{ description }}</h2>
|
||||
<p>{{ long_description }}</p>
|
||||
<a href='/'>Click here to return to our homepage</a>
|
||||
<h2>{{ error }}</h2>
|
||||
<p>{{ description }}</p>
|
||||
<a href='/'>Click here to return to the homepage</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
@@ -1,32 +1,39 @@
|
||||
{% include 'header.html' %}
|
||||
<main>
|
||||
<nav id="filter">
|
||||
<label for="filter_category">Filter:</label>
|
||||
<select id="filter_category" name="filter_category" onchange="update_filter()">
|
||||
<option value="all">All Categories</option>
|
||||
{% for category in all_categories %}
|
||||
<option {{ 'selected' if current_category == category }} value="{{ category }}">{{all_categories.get(category).get('title')}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</nav>
|
||||
<h2>{{ title }}</h2>
|
||||
<p>{{ description }}</p>
|
||||
<section id="projects">
|
||||
{% for row in articles %}
|
||||
<div class="project">
|
||||
<img class="project-thumb" src="/projects/image/{{ row.image }}">
|
||||
<main id="project-main">
|
||||
<nav id="filter">
|
||||
<label for="filter_category">Filter:</label>
|
||||
<select id="filter_category" name="filter_category" onchange="update_filter()">
|
||||
<option value="all">All Categories</option>
|
||||
{% for category in all_categories %}
|
||||
<option {{ 'selected' if current_category==category }} value="{{ category }}">
|
||||
{{all_categories.get(category).get('title')}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</nav>
|
||||
<h2>{{ title }}</h2>
|
||||
<p>{{ description }}</p>
|
||||
<section id="projects">
|
||||
{% for row in articles %}
|
||||
<div class="project">
|
||||
<img class="project-thumb" src="/projects/image/{{ row.image }}">
|
||||
<div class="project-text">
|
||||
{% if row.get('link') is not none %}
|
||||
<a href="{{ row.link }}"><h3>{{ row.title }}</h3></a>
|
||||
<a href="{{ row.link }}">
|
||||
<h3>{{ row.title }}</h3>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/projects/{{ row.id }}"><h3>{{ row.title }}</h3></a>
|
||||
<a href="/projects/{{ row.id }}">
|
||||
<h3>{{ row.title }}</h3>
|
||||
</a>
|
||||
{% endif %}
|
||||
<p class="article-description">{{ row.description }}</p>
|
||||
<p class="article-date">{{ row.date | human_date }}</p>
|
||||
{% for category in row.categories %}
|
||||
<a class="article-category" href="/projects/category/{{ category }}">{{ category | category_title }} </a>
|
||||
<a class="article-category" href="/projects/category/{{ category }}">{{ category | category_title }}{{ ", " if not loop.last }}</loop></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</section>
|
||||
</main>
|
||||
{% include 'footer.html' %}
|
Reference in New Issue
Block a user