Browse Source

cleaning templates

master
jules 11 months ago
parent
commit
1ceaa64946
  1. BIN
      __pycache__/daapinterface.cpython-39.pyc
  2. 248
      daapinterface.py
  3. 4
      static/css/style.css
  4. 78
      templates/--layout.html
  5. 127
      templates/00-old-about.html
  6. 78
      templates/00-old-layout.html
  7. 55
      templates/00-old-selfpublishedindex.html
  8. 54
      templates/00-old-zinesindex.html
  9. 12
      templates/about-wiki.html
  10. 12
      templates/about.html
  11. 148
      templates/artistsindex.html
  12. 151
      templates/browsethearchive.html
  13. 12
      templates/casestudy.html
  14. 227
      templates/contributor.html
  15. 13
      templates/home.html
  16. 2
      templates/layout.html
  17. 149
      templates/newestindex.html
  18. 149
      templates/oldestindex.html
  19. 68
      templates/orderindex.html
  20. 18
      templates/organisation.html
  21. 43
      templates/peopleindex.html
  22. 45
      templates/person-later.html
  23. 18
      templates/person.html
  24. 13
      templates/searchtools.html
  25. 149
      templates/selfpublishedindex.html
  26. 12
      templates/support.html
  27. 12
      templates/team.html
  28. 13
      templates/tutorials.html
  29. 13
      templates/upload.html
  30. 0
      templates/wikipagetemp.html
  31. 148
      templates/zinesindex.html

BIN
__pycache__/daapinterface.cpython-39.pyc

Binary file not shown.

248
daapinterface.py

@ -32,6 +32,8 @@ sparql = SPARQLWrapper("https://query.daap.bannerrepeater.org/proxy/wdqs/bigdata
# # # # # # # # # # # # # # # # # # # # # # # #
# PAGES
# # # # # # # # # # # # # # # # # # # # # # # #
######################### HOMEPAGE
@app.route("/")
def home():
sparql.setQuery('''
@ -85,6 +87,8 @@ def home():
return render_template('home.html', results=results, ImagesBanner=ImagesBanner)
######################### BROWSE THE ARCHIVE
@app.route("/browsethearchive")
def browsethearchive():
sparql.setQuery('''
@ -120,7 +124,7 @@ def browsethearchive():
publication_date = publication["date"]["value"]
if "image" in publication:
publication_image = publication["image"]["value"]
return render_template('browsethearchive.html', results=results)
return render_template('orderindex.html', results=results, order='browse the archive from A-Z')
@app.route("/browsebycategory")
def browsebycategory():
@ -160,7 +164,7 @@ ORDER BY DESC(?dateadded)
''')
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
return render_template('recentindex.html', results=results)
return render_template('orderindex.html', results=results, order='index by recently added works')
######################### OLDEST INDEX
@app.route("/datesindex_asc")
@ -190,7 +194,7 @@ ORDER BY ASC(?date)
''')
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
return render_template('oldestindex.html', results=results)
return render_template('orderindex.html', results=results, order='index by publication date from oldest')
######################### NEWEST INDEX
@app.route("/datesindex_desc")
@ -221,7 +225,7 @@ ORDER BY DESC(?date)
''')
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
return render_template('newestindex.html', results=results)
return render_template('orderindex.html', results=results, order='index by publication date from newest')
######################### ARTIST INDEX
@app.route("/artistsindex")
@ -245,7 +249,7 @@ def artistsindex():
''')
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
return render_template('artistsindex.html', results=results)
return render_template('peopleindex.html', results=results, targetgroup='creators / contributors')
######################### PUBLISHERS INDEX
@app.route("/publishersindex")
@ -272,9 +276,9 @@ def publishersindex():
''')
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
return render_template('publishersindex.html', results=results)
return render_template('peopleindex.html', results=results, targetgroup='publishers')
######################### SELF PUBLISHED INDEX
######################### SELFPUBLISHED INDEX
@app.route("/selfpublishedindex")
def selfpublishedindex():
sparql.setQuery('''
@ -292,7 +296,7 @@ def selfpublishedindex():
''')
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
return render_template('selfpublishedindex.html', results=results)
return render_template('orderindex.html', results=results, order='index of self-pubished works')
######################### ZINES INDEX
@app.route("/zinesindex")
@ -314,7 +318,7 @@ def zinesindex():
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
# print(results)
return render_template('zinesindex.html', results=results)
return render_template('orderindex.html', results=results, order="index of zines")
##########################
@ -1125,11 +1129,8 @@ def item():
# PAGES FROM WIKI
#########################
######################### ABOUT
@app.route("/about")
def about():
url="https://daap.bannerrepeater.org/w/index.php?title=About&action=render"
def fetchwikipage(wikipagename):
url="https://daap.bannerrepeater.org/w/index.php?title="+wikipagename+"&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
@ -1137,273 +1138,98 @@ def about():
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
# A problem with image src obtention was solved by using absolute paths rather than traditional wiki syntax
# replaceString = "wiki/Special:Redirect/file/"
# cleanSoup = BeautifulSoup(str(text).replace("wiki/File:", replaceString))
# for a in soup.find_all('a', href=True):
# if a.text:
# print(a['href'])
# replace src from img zith href from a href and remove the a
text=Markup(text)
return render_template('about.html', text=text)
return render_template('wikipagetemp.html', text=text)
######################### ABOUT
@app.route("/about")
def about():
return fetchwikipage("About")
######################### UPLOAD
@app.route("/upload")
def upload():
url="https://daap.bannerrepeater.org/w/index.php?title=Upload&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('upload.html', text=text)
return fetchwikipage("Upload")
# #################### TEAM
@app.route("/team")
def team():
url="https://daap.bannerrepeater.org/w/index.php?title=Team&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('team.html', text=text)
return fetchwikipage("Team")
# #################### CASE STUDY
@app.route("/casestudy")
def casestudy():
url="https://daap.bannerrepeater.org/w/index.php?title=Carolee_Schneemann_case_study&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('casestudy.html', text=text)
return fetchwikipage("Carolee_Schneemann_case_study")
# #################### CODE OF CONDUCT
@app.route("/codeofconduct")
def codeofconduct():
url="https://daap.bannerrepeater.org/w/index.php?title=Code_of_Conduct&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('codeofconduct.html', text=text)
return fetchwikipage("Code_of_Conduct")
# #################### SEARCH TOOLS
@app.route("/searchtools")
def searchtools():
url="https://daap.bannerrepeater.org/w/index.php?title=Search_Tools&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('searchtools.html', text=text)
return fetchwikipage("Search_Tools")
# #################### SUPPORT
@app.route("/support")
def support():
url="https://daap.bannerrepeater.org/w/index.php?title=Support&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('support.html', text=text)
return fetchwikipage("Support")
######################### TUTORIAL
@app.route("/tutorials")
def tutorials():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorials&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorials")
######################### TUTORIAL 1
@app.route("/tutorial_1")
def tutorial_1():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_1&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_1")
######################### TUTORIAL 2
@app.route("/tutorial_2")
def tutorial_2():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_2&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_2")
######################### TUTORIAL 3
@app.route("/tutorial_3")
def tutorial_3():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_3&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_3")
######################### TUTORIAL 4
@app.route("/tutorial_4")
def tutorial_4():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_4&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_4")
######################### TUTORIAL 5
@app.route("/tutorial_5")
def tutorial_5():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_5&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_5")
######################### TUTORIAL 6
@app.route("/tutorial_6")
def tutorial_6():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_6&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_6")
######################### TUTORIAL 7
@app.route("/tutorial_7")
def tutorial_7():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_7&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_7")
######################### TUTORIAL 8
@app.route("/tutorial_8")
def tutorial_8():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_8&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_8")
######################### TUTORIAL 9
@app.route("/tutorial_9")
def tutorial_9():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_9&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_9")
######################### TUTORIAL 10 TEST
@app.route("/tutorial_10")
def tutorial_10():
url="https://daap.bannerrepeater.org/w/index.php?title=Tutorial_10&action=render"
# Make a GET request to fetch the raw HTML content
html_content = requests.get(url).text
# Parse the html content
soup = BeautifulSoup(html_content, "lxml")
# print(soup.prettify()) # print the parsed data of html
text=soup.find("html")
text=Markup(text)
# print(text)
return render_template('tutorials.html', text=text)
return fetchwikipage("Tutorial_10")

4
static/css/style.css

@ -471,6 +471,10 @@ div#footer-title-contact {
margin-bottom: 20px !important;
}
div#footer-title-contact p{
font-size: 18ps; letter-spacing: 0.12em;
}
#footer-socials-links {
display: flex;
flex-direction: column;

78
templates/--layout.html

@ -1,78 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>D.A.A.P</title>
<link rel="stylesheet" href="{{ url_for('static', filename='/css/style.css') }}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
</head>
<body>
<div id="header">
<div id="header-top">
<div id="animatedlogo">
<img src="{{ url_for('static', filename='/imgs/Logos/DAAP BR square logo -Animated Image (Small).gif') }}">
</div>
<div id="header-title">
<a href="{{ url_for('home') }}">DIGITAL ARCHIVE OF ARTISTS' PUBLISHING</a>
</div>
<div id="header-keyword-search">
<span>WEBSITE IN DEVELOPMENT</span>
</div>
</div>
<div id="navigation">
<div id="nav-about"><a href="{{ url_for('about') }}">About</a></div>
<div id="nav-browse-archive"><a href="{{ url_for('browsethearchive') }}">Browse the archive</a></div>
<div id="nav-browse-category">Browse by category</div>
<div id="nav-search"><a target="_blank" href="http://query.daap.bannerrepeater.org">Search tools</a></div>
<div id="nav-tutorials">Tutorials</div>
<div id="nav-upload">Upload</div>
<div id="nav-login"><a target="_blank" href="https://daap.bannerrepeater.org/w/index.php">Log in</a></div>
</div>
</div>
{% block content %}
{% endblock content %}
<div id="footer">
<!-- <div id="footer-br"> -->
<div id="footer-title-br"><p>A project by:</p></div>
<div id="footer-img-br"><a target="_blank" href="https://www.bannerrepeater.org/"><img src="{{ url_for('static', filename='/imgs/Logos/Banner-Repeater-Logo.png') }}"></a></div>
<!-- </div> -->
<!-- <div id="footer-others"> -->
<div id="footer-title-others"><p>With support from:</p></div>
<div id="footer-img-others">
<div id="footer-img-wiki"><a href="_blank" target="https://wikimedia.org.uk/"><img src="{{ url_for('static', filename='/imgs/Logos/wikimedia_logo.png') }}"></a></div>
<div id="footer-img-lottery"><a href="https://www.artscouncil.org.uk/" target=""><img src="{{ url_for('static', filename='/imgs/Logos/Lottery-white on black.png') }}"></a></div>
</div>
<div id="footer-title-socials"><p>SOCIAL</p></div>
<div id="footer-socials-links">
<p><a target="_blank" href="https://www.facebook.com/BannerRepeater">Facebook</a></p>
<p><a target="_blank" href="https://twitter.com/BANNERREPEATER">Twitter</a></p>
<p><a target="_blank" href="https://www.instagram.com/bannerrepeater/">Instagram</a></p>
<p><a target="_blank" href="mailto:daap.community@disroot.org">Email address</a></p>
</div>
<div id="footer-title-contact"><p>EXPRESSION OF INTEREST</p></div>
<div id="footer-contact"><a target="_blank" href="https://forms.gle/4EFpkQ9AKzZpdUmF6"><div class="bluebutton" id="contactform">FILL UP CONTACT FORM<span></span></div></a></div>
</div>
</body>
</html>

127
templates/00-old-about.html

@ -1,127 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div class="pagetitle" id="about-title">About: Digital Archive of Artists Publishing (DAAP)</div>
<div id="about-content">
<div id="about-content-top">
<div id="about-content-top-left">The Digital Archive of Artists Publishing (DAAP) is an interactive, user-driven, searchable database of Artists’ Books and publications, that acts as a hub to engage with others, built by artists, publishers, and a community of producers in contemporary Artists’ Publishing, developed via an ethically driven design process and open-data methodology.
</div>
<div id="about-content-top-right">
<img src="{{ url_for('static', filename='/imgs/Pages/bannerrepeater.png') }}">
</div>
</div>
<div id="about-content-bottom">
<div class="about-paragraph">
<div class="about-paragraph-subtitle">Introduction to the project</div>
<div>
<p>
A collaborative project, with the support of Wikimedia UK, DAAP is inspired by the site of Banner Repeater’s public Archive of Artists’ Publishing on Hackney Downs train station, with 11,000 people passing a day, in response to the need for a similarly dynamic approach to archiving in an online context.</p>
<p>
We have drawn upon the working knowledge of users and archivists alike, to develop a database with sufficient complexity, whilst remaining searchable, that affords multiple histories to develop, confronting issues of authorship and representation, whilst addressing the challenges of cataloguing often deliberately difficult to categorise materials. With an emphasis on inclusivity from the start, we aim to privilege anecdotal histories and multiple perspectives alongside factual data, whilst the wiki style approach means that users can upload their own material, single items, or entire collections, choosing appropriate sharing permissions at time of upload. </p>
<p>
DAAP is committed to challenging the politics of traditional archives that come of issues regarding inclusion and accessibility, from a post-colonial, critical gender and LGBTQI perspective. The project will work to ensure an equitable and ethical design process occurs throughout the archive development. </p>
</div>
</div>
<div class="about-paragraph">
<div class="about-paragraph-subtitle">Introduction to the digital infrastructure</div>
<div>
<p>
DAAP brings together scholars and practitioners in the field of art, artist’s publishing and creative technology to set a precedent for modelling bespoke and non-standardised artist publications as linked data. <i>Linked open data</i> is data that is machine-readable, published online following specific interoperability standards, and published with an open license thus enabling others to connect to it. </p>
<p>
Utilising the open-source software Wikibase, DAAP brings to the surface new and unexpected data connections across diverse collection artefacts, providing a resource to link to other archives, and communities, whilst visualisation tools offer exciting visual diagrams for in-depth research. DAAP implements a custom frontend interface on top of the Wikibase database, which follows familiar user interface metaphors, increasing accessibility across a broader audience. </p>
<p>
Wikibase is part of a family of applications maintained by the Wikimedia Foundation, an international non-profit supporting public knowledge platforms such as Wikipedia and Wikidata. DAAP’s installation of Wikibase benefits from the technical affordances of the public platform Wikidata: </p>
<ul>
<li>storing structured data; </li>
<li>using a flexible linked-data-compliant model for developing bibliographic data about publications; </li>
<li>capacity for multiple users to contribute to the database; </li>
<li>version control; </li>
<li>sophisticated querying options and visualizations provided via Wikidata Query Service tools. </li>
</ul>
<p>
In addition to the structured data in the database, DAAP takes advantage of the possibility to connect archive records held in Wikibase to regular wiki text pages, so that long-form anecdotal narratives can sit alongside factual data. At the same time, due to its independence from Wikidata, DAAP also serves as a space of more open experimentation – where data is modelled and tested with active users within a community of subject specialists (artists, self-publishers, librarians, academics, students, etc).</p>
</div>
</div>
<div class="about-paragraph">
<div class="about-paragraph-subtitle">Our ethical standpoint</div>
<div>
<p>
Artists' Publishing is incredibly complex, to the extent that each item could almost warrant a new category of its own, making visible the challenges in sharing deliberately difficult to categorise material. </p>
<p>
The project has developed through an interrogation of how an informed use of open-source linked data technology can be utilised towards a more ethically driven archival process. </p>
<p>
Utilising a <i>linked data</i> database for the digital platform enables data to be structured in flexible ways, which can grow and develop organically around community needs, rather than conforming to rigid, pre-existing bibliographic standards. Traditional ‘standards’ aim to structure bibliographic data in ways that make it possible to find publications online, but as is increasingly clear, technology is not neutral, with an active tendency to reproduce existing bias’ and discriminations already existing in the world today. How search criteria, and other structural aspects of archiving contribute to this, is an ongoing conversation that drives the development of the archive, drawing from the experiences of users, archivists and technologists, alike. </p>$
<p>
The native features of the linked data environment have been activated within a communal practice, in order for the project to support an equitable, and ethical design process throughout the archive development. This in itself, is a vital and ongoing conversational process, in which mistakes can be made, discussed and rectified. Workshops have facilitated much of these conversations so far, with a host of users, as well as experts, joining in discussion and debate, which will continue as the archive continues to grow.</p>
<p>
DAAP developed from critique regarding the extractive relations of digital neo-colonialisms, as well as historical colonialisms, since 2010, and we are strongly committed to challenging the politics of traditional archives that come of issues regarding inclusion and accessibility, from a post-colonial, critical gender and LGBTQI perspective.</p>
<p>
<h4>Telegram channel</h4>
We have initiated a dedicated Telegram group to facilitate discussions around data entry and the ethics of archiving in between the workshop sessions. <a target="_blank" href="mailto:daap.community@disroot.org">Get in touch</a> if you’d like to join the channel.</p>
<p>
<h4>Code of conduct</h4>
We enforce a strict Code of Conduct throughout our public events both in person and online. Read the full <a target="_blank" href="https://daap.bannerrepeater.org/wiki/Project:CodeOfConduct">CoC text here</a>.</p>
</div>
</div>
<div class="about-paragraph">
<div class="about-paragraph-subtitle">Our Team</div>
<div>
<p>
The <b>Artists' Publishing team</b> is led by <a target="_blank" href="https://www.amiclarke.com/">artist</a> and writer <b>Ami Clarke</b>, founder of Banner Repeater, curator of the arts programme and <a href="https://www.bannerrepeater.org/un-publish">Un-Publish</a> series, joined by experts in Artists' Publishing: <b>Arnaud Desjardin</b> of <a href="http://theeverydaypress.net">The Everyday Press</a>, and <a href="https://www.marcuscampbell.co.uk/">Marcus Campbell Books</a> and author of <a href="https://www.printedmatter.org/catalog/35352/">The Book on Books on Artists' Books</a>, <b>Gustavo Grandal Montero</b> librarian and researcher at UAL, curator of <a href="https://www.arts.ac.uk/students/library-services/special-collections-and-archives/chelsea-collections-and-archives">The Special Collections at Chelsea College of Arts Library - the oldest and one of the largest artists' books collection in the UK, and editor of the Art Libraries Journal</a>, and, curator and digital archivist <a href="http://www.karendifranco.net/"><b>Dr Karen Di Franco</b></a> who produced <a href="https://www.bookworks.org.uk/">Book Works</a> digital archive, and recently having been awarded her AHRC Collaborative Doctoral Candidate, University of Reading & Tate Britain. </p>
<p>
The <b>Technical team</b> is led by digital designer and UX researcher <b>Lozana Rossenova</b>, currently completing her PhD in Digital Archive Design at the Centre for the Study of the Networked Image, in collaboration with leading digital art organization <a href="https://rhizome.org/">Rhizome</a>. She brings her UX design and data modeling expertise developed during her <a href="https://sites.rhizome.org/artbase-re-design/">PhD research</a> and her professional practice in working with born-digital archives and linked open data (LOD) standards. The technical team is joined by <a href="http://varia.zone/en/">Varia</a> member <b>Julie Boschat Thorez</b> as lead developer on the project. She brings technical expertise from working on archival and conservation projects with leading digital artists and art organizations from the Netherlands, such as <a href="https://www.li-ma.nl/lima/">LIMA</a>. <b>Paulien Hosang</b> has developed the visual design for the archive’s interface, drawing on experience working for non-profit clients at digital agencies both in <a href="https://www.designbysoapbox.com/">the UK</a> and <a href="https://www.greenberry.nl/">the Netherlands</a>.</p>
<p>
The Artists’ Publishing team is also joined by historian, archivist and writer Frances Whorrall-Campbell (MA) and artist <b>Cicilia Östholm</b> (PhD student, Fine Art/Humanities RCA), co-initiator of <a href="http://www.cicilia.works/index.php/works/equal-voices-in-the-room/">equal voices in the room?</a> who will help guide important ways to address bias and inequality through technological intervention, to undermine dominance and hegemonies based on gender binaries and the Western canon. Over the years important contributions have been made to the archival process, by several Banner Repeater volunteers, most recently of whom have done considerable work: Charlie Pritchard, Ariel Finch, Amelia Claringbull, Louise Rutledge, and Nína Óskarsdóttir, Maša Škrinjar kindly funded by an Erasmus scheme.</p>
</div>
</div>
<div class="about-paragraph">
<div class="about-paragraph-subtitle">A project by Banner Repeater with the support of Wikimedia UK</div>
<div>
<p>
<b>Banner Repeater</b> is an artist-led org: experimental project space and reading room with a public Archive of Artists’ Publishing, founded in 2010 by artist Ami Clarke. The project is driven by its location, on Hackney Downs train station, platform 1, dedicated to developing critical art in the natural interstice the platform and incidental footfall of over 11,000 passengers a day provides. </p>
<p>
Banner Repeater works with artists to develop new works, through an ambitious exhibition programme installed in a highly visible and accessible project space, with a programme of events, talks, and performances, to introduce discussion and encourage debate of key issues in art today. The reading room holds a permanently sited public Archive of Artists’ Publishing that provides an important bibliographic resource that all visitors to BR can browse, alongside the Digital Archive of Artists’ Publishing - a tool as well as an electronic commons for the exchange of detailed information.</p>
<p>
Networked strategies underpin everything that we do, pioneering a hybrid way of working in critically engaged contemporary art practice through the strong symbiosis between the experiments in text and publishing held in the public Archive of Artists’ Publishing on platform 1 Hackney Downs, and artistic practices engaging in networked strategies today. </p>
<p>
Banner Repeater is supported by Arts Council England, The Elephant Trust, The British Council, Chelsea Arts Club Trust, The Goethe Institut, Transport for London, Arriva Rail, ACoRP, The Community Rail Network, Del Chopo Museum Mexico City, The Italian Institute of Culture, London. BR was initially supported by a grant from the Empty Shop Fund, Arts in Empty Spaces, Hackney Council in 2010.</p>
</div>
</div>
</div>
</div>
{% endblock content %}

78
templates/00-old-layout.html

@ -1,78 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>D.A.A.P</title>
<link rel="stylesheet" href="{{ url_for('static', filename='/css/style.css') }}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
</head>
<body>
<div id="header">
<div id="header-top">
<div id="animatedlogo">
<img src="{{ url_for('static', filename='/imgs/Logos/DAAP BR square logo -Animated Image (Small).gif') }}">
</div>
<div id="header-title">
<a href="{{ url_for('home') }}">DIGITAL ARCHIVE OF ARTISTS' PUBLISHING</a>
</div>
<div id="header-keyword-search">
<span>WEBSITE IN DEVELOPMENT</span>
</div>
</div>
<div id="navigation">
<div id="nav-about"><a href="{{ url_for('about') }}">About</a></div>
<div id="nav-browse-archive"><a href="{{ url_for('browsethearchive') }}">Browse the archive</a></div>
<div id="nav-browse-category">Browse by category</div>
<div id="nav-search"><a target="_blank" href="http://query.daap.bannerrepeater.org">Search tools</a></div>
<div id="nav-tutorials">Tutorials</div>
<div id="nav-upload">Upload</div>
<div id="nav-login"><a target="_blank" href="https://daap.bannerrepeater.org/w/index.php">Log in</a></div>
</div>
</div>
{% block content %}
{% endblock content %}
<div id="footer">
<!-- <div id="footer-br"> -->
<div id="footer-title-br"><p>A project by:</p></div>
<div id="footer-img-br"><a target="_blank" href="https://www.bannerrepeater.org/"><img src="{{ url_for('static', filename='/imgs/Logos/Banner-Repeater-Logo.png') }}"></a></div>
<!-- </div> -->
<!-- <div id="footer-others"> -->
<div id="footer-title-others"><p>With support from:</p></div>
<div id="footer-img-others">
<div id="footer-img-wiki"><a href="_blank" target="https://wikimedia.org.uk/"><img src="{{ url_for('static', filename='/imgs/Logos/wikimedia_logo.png') }}"></a></div>
<div id="footer-img-lottery"><a href="https://www.artscouncil.org.uk/" target=""><img src="{{ url_for('static', filename='/imgs/Logos/Lottery-white on black.png') }}"></a></div>
</div>
<div id="footer-title-socials"><p>SOCIAL</p></div>
<div id="footer-socials-links">
<p><a target="_blank" href="https://www.facebook.com/BannerRepeater">Facebook</a></p>
<p><a target="_blank" href="https://twitter.com/BANNERREPEATER">Twitter</a></p>
<p><a target="_blank" href="https://www.instagram.com/bannerrepeater/">Instagram</a></p>
<p><a target="_blank" href="mailto:daap.community@disroot.org">Email address</a></p>
</div>
<div id="footer-title-contact"><p>EXPRESSION OF INTEREST</p></div>
<div id="footer-contact"><a target="_blank" href="https://forms.gle/4EFpkQ9AKzZpdUmF6"><div class="bluebutton" id="contactform">FILL UP CONTACT FORM<span></span></div></a></div>
</div>
</body>
</html>

55
templates/00-old-selfpublishedindex.html

@ -1,55 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div class="pagetitle" id="selfpublishedindex-title">INDEX OF PUBLISHERS</div>
<table id="selfpublishedindex-table">
<thead>
<tr>
<th>ID</th>
<th>WORK</th>
<th>ALIASES</th>
<th>DESCRIPTION</th>
</tr>
</thead>
<tbody>
{% for x in results['results']['bindings']%}
<tr>
<th class="idnumber"><a href="artwork?id={{ x['work']['value'] | replace('http://wikibase.svc/entity/', '') }}">{{ x['work']['value'] | replace('http://wikibase.svc/entity/', '') }}</a></th>
<th class="label"><a href="artwork?id={{ x['work']['value'] | replace('http://wikibase.svc/entity/', '') }}">{{ x["workLabel"]['value'] }}</a></th>
<th class="altaliases">
{% if "workAltLabel" in x %}
{{ x["workAltLabel"]["value"] }}
{% endif %}
</th>
<th class="description">
{% if "workDescription" in x %}
{{ x["workDescription"]["value"] }}
{% endif %}
</th>
</tr>
{% endfor %}
</tbody>
</table>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
$('#selfpublishedindex-table').dataTable({
ordering: false,
searching: false,
lengthChange: false,
pageLength:20,
info: false
});
});
</script>
{% endblock content %}

54
templates/00-old-zinesindex.html

@ -1,54 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div class="pagetitle" id="zinesindex-title">INDEX OF ZINES</div>
<table id="zinesindex-table">
<thead>
<tr>
<th>ID</th>
<th>WORK</th>
<th>ALIASES</th>
<th>DESCRIPTION</th>
</tr>
</thead>
<tbody>
{% for x in results['results']['bindings']%}
<tr>
<th class="idnumber"><a href="artwork?id={{ x['work']['value'] | replace('http://wikibase.svc/entity/', '') }}">{{ x['work']['value'] | replace('http://wikibase.svc/entity/', '') }}</a></th>
<th class="label"><a href="artwork?id={{ x['work']['value'] | replace('http://wikibase.svc/entity/', '') }}">{{ x["workLabel"]['value'] }}</a></th>
<th class="altaliases">
{% if "workAltLabel" in x %}
{{ x["workAltLabel"]["value"] }}
{% endif %}
</th>
<th class="description">
{% if "workDescription" in x %}
{{ x["workDescription"]["value"] }}
{% endif %}
</th>
</tr>
{% endfor %}
</tbody>
</table>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
$('#zinesindex-table').dataTable({
ordering: false,
searching: false,
lengthChange: false,
pageLength:20,
info: false
});
});
</script>
{% endblock content %}

12
templates/about-wiki.html

@ -1,12 +0,0 @@
{% extends "layout.html" %}
{% block content %}
{{ text }}
<style type="text/css">
div#toc{
display: none
}
</style>
{% endblock content %}

12
templates/about.html

@ -1,12 +0,0 @@
{% extends "layout.html" %}
{% block content %}
{{ text }}
<style type="text/css">
div#toc{
display: none
}
</style>
{% endblock content %}

148
templates/artistsindex.html

@ -1,148 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div class="pagetitle" id="artistsindex-title">INDEX OF CREATORS / CONTRIBUTORS</div>
<table id="artistsindex-table">
<thead>
<tr>
<th>ID</th>
<th>LABEL</th>
<th>ALIASES</th>
<th>DESCRIPTION</th>
</tr>
</thead>
<tbody>
{% for x in results['results']['bindings']%}
<tr>
<th class="idnumber"><a href="item?id={{ x['creators']['value'] | replace('http://daap.bannerrepeater.org/entity/', '') }}">{{ x['creators']['value'] | replace('http://daap.bannerrepeater.org/entity/', '') }}</a></th>
<th class="label"><a href="item?id={{ x['creators']['value'] | replace('http://daap.bannerrepeater.org/entity/', '') }}">{{ x["creatorsLabel"]['value'] }}</a></th>
<th class="altaliases">
{% if "creatorsAltLabel" in x %}
{{ x["creatorsAltLabel"]["value"] }}
{% endif %}
</th>
<th class="description">
{% if "creatorsDescription" in x %}
{{ x["creatorsDescription"]["value"] }}
{% endif %}
</th>
</tr>
{% endfor %}
</tbody>
</table>
<ul id="pagin" class="browsethearchive-pagination">
</ul>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
// pagination script w/ support from @biberman on stackoverflow - big thanks!
let startPage;
const pageSize = 24;
const totalSlidePage = 5;
const pageCount = Math.ceil($("tr").length / pageSize);
const slideRange = Math.floor(totalSlidePage / 2);
slide = function() {
startPage = $("#pagin li a.current").parent().index();
let paginationStart = (startPage - slideRange) <= 1 ? 0 :
(startPage >= (pageCount - slideRange) ? (pageCount - totalSlidePage) :
(startPage - slideRange - 1));
$("#pagin li").hide();
for (let t = paginationStart; t < (paginationStart + totalSlidePage); t++) {
$("#pagin li").eq(t + 1).show();
}
next.show();
prev.show();
if (startPage == 1) {
prev.hide();
}
if (startPage == pageCount ) {
next.hide();
}
}
showPage = function() {
console.log(startPage);
$("tr").hide();
$("tr").each(function(n) {
if (n >= pageSize * (startPage - 1) && n < pageSize * startPage)
$(this).show();
});
}
for (let i = 0 ; i < pageCount; i++) {
$("#pagin").append('<li><a href="#">' + (i + 1) + '</a></li> ');
if (i > pageSize) {
$("#pagin li").eq(i).hide();
}
}
let prev = $("<li/>").addClass("prev").html("Prev").click(function() {
let prevLi = $("#pagin li a.current").parent().prev().find("a");
if (prevLi[0]) {
$("#pagin li a.current").removeClass("current");
prevLi.addClass("current");
}
slide();
if (startPage != 0) {
showPage();
}
});
let next = $("<li/>").addClass("next").html("Next").click(function() {
let nextLi = $("#pagin li a.current").parent().next().find("a");
if (nextLi[0]) {
$("#pagin li a.current").removeClass("current");
nextLi.addClass("current");
}
slide();
if (startPage <= pageCount) {
showPage();
}
});
$("#pagin").prepend(prev).append(next);
$("#pagin li a").click(function() {
$('#pagin li a').removeClass('current');
$(this).addClass('current');
slide();
showPage();
});
$("#pagin li a").eq(0).addClass("current");
slide();
showPage();
</script>
{% endblock content %}

151
templates/browsethearchive.html

@ -1,151 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div id="browsethearchive-all">
<div class="pagetitle" id="browsethearchive-title">BROWSE THE ARCHIVE FROM A–Z</div>
<div id="browsethearchive-grid">
{% for x in results['results']['bindings']%}
<div class="browsethearchive-items">
<div class="browsethearchive-items-top">
{% if "image" in x %}
<a href='/artwork?id={{ x["work"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="browsethearchive-imgs" src='{{ x["image"]["value"] | replace("wiki/File:","wiki/Special:Redirect/file/") }}'>
</a> <br>
{% else %}
<a href='/artwork?id={{ x["work"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="browsethearchive-imgs" src="{{ url_for('static', filename='/imgs/Icons/placeholder_no-image2.png') }}"><br>
</a>
{% endif %}
</div>
<div class="browsethearchive-items-bottom">
<a class="title" href='/artwork?id={{ x["work"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
{{ x["workLabel"]["value"]}}
</a> <br>
<span class="date">
{% if "date" in x %}
{{ x["date"]["value"] | replace("T00:00:00Z", "") }}
{% endif %}
</span>
</div>
</div>
{% endfor %}
</div>
<ul id="pagin" class="browsethearchive-pagination">
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
// pagination script w/ support from @biberman on stackoverflow - big thanks!
let startPage;
const pageSize = 24;
const totalSlidePage = 5;
const pageCount = Math.ceil($(".browsethearchive-items").length / pageSize);
const slideRange = Math.floor(totalSlidePage / 2);
slide = function() {
startPage = $("#pagin li a.current").parent().index();
let paginationStart = (startPage - slideRange) <= 1 ? 0 :
(startPage >= (pageCount - slideRange) ? (pageCount - totalSlidePage) :
(startPage - slideRange - 1));
$("#pagin li").hide();
for (let t = paginationStart; t < (paginationStart + totalSlidePage); t++) {
$("#pagin li").eq(t + 1).show();
}
next.show();
prev.show();
if (startPage == 1) {
prev.hide();
}
if (startPage == pageCount ) {
next.hide();
}
}
showPage = function() {
console.log(startPage);
$(".browsethearchive-items").hide();
$(".browsethearchive-items").each(function(n) {
if (n >= pageSize * (startPage - 1) && n < pageSize * startPage)
$(this).show();
});
}
for (let i = 0 ; i < pageCount; i++) {
$("#pagin").append('<li><a href="#">' + (i + 1) + '</a></li> ');
if (i > pageSize) {
$("#pagin li").eq(i).hide();
}
}
let prev = $("<li/>").addClass("prev").html("Prev").click(function() {
let prevLi = $("#pagin li a.current").parent().prev().find("a");
if (prevLi[0]) {
$("#pagin li a.current").removeClass("current");
prevLi.addClass("current");
}
slide();
if (startPage != 0) {
showPage();
}
});
let next = $("<li/>").addClass("next").html("Next").click(function() {
let nextLi = $("#pagin li a.current").parent().next().find("a");
if (nextLi[0]) {
$("#pagin li a.current").removeClass("current");
nextLi.addClass("current");
}
slide();
if (startPage <= pageCount) {
showPage();
}
});
$("#pagin").prepend(prev).append(next);
$("#pagin li a").click(function() {
$('#pagin li a').removeClass('current');
$(this).addClass('current');
slide();
showPage();
});
$("#pagin li a").eq(0).addClass("current");
slide();
showPage();
</script>
</div>
{% endblock content %}

12
templates/casestudy.html

@ -1,12 +0,0 @@
{% extends "layout.html" %}
{% block content %}
{{ text }}
<style type="text/css">
div#toc{
display: none
}
</style>
{% endblock content %}

227
templates/contributor.html

@ -1,227 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<!-- START OF BLOCK -->
<div>
<!-- CONTRIBUTOR TITLE AND SHORT INTRO -->
<div>
<!-- TITLE label in rectangle -->
<!-- switch label depending on label -->
{% for x in contributorintro['results']['bindings'] %}
{% if 'itemtypeLabel' in x %}
<div class="artwork-box">
<span>{{ x['itemtypeLabel']['value'] }}</span>
</div>
{% else %}
<div class="artwork-box">
<span>PERSON/ORGANISATION</span>
</div>
{% endif %}
<!-- Contributor name -->
<div class="artwork-title">
{{ x['itemLabel']['value'] }}
</div>
<!-- Contributor intro-description -->
<div class="artwork-intro">
{% if 'itemDescription' in x %}
{{ x['itemDescription']['value'] }}
{% endif %}
</div>
{% endfor %}
</div>
<!-- END TITLE SHORT INTRO -->
<!-- ########################### -->
<!-- BLOCK IMAGE/DATA AND BIO -->
<!-- ############################ -->
<div class="artwork-about">
<!-- LEFT COLUMN -->
<div class="artwork-leftcolumn">
<!-- CONTRIBUTOR IMAGES -->
<div class="my-slider">
{% if contributorimage['results']['bindings']==[] %}
<img src="{{ url_for('static', filename='/imgs/Icons/placeholder_no-image2.png') }}">
{% else %}
{% for x in contributorimage['results']['bindings'] %}
<div class="item">
<!-- START GROUP IMG + LABELS -->
{% if "image" in x %}
<img src='{{ x["image"]["value"] | replace("wiki/File:","wiki/Special:Redirect/file/") }}'>
<!-- copyright and front or back -->
{% endif %}
{% if "depictsLabel" in x %}
<p>{{ x['depictsLabel']['value'] }}</p>
{% endif %}
{% if "licenseLabel" in x %}
<p>License: {{ x['licenseLabel']['value'] }}</p>
{% endif %}
<!-- END GROUP IMG + LABELS -->
</div>
{% endfor %}
{% endif %}
</div>
<!-- END CONTRIBUTOR IMAGES -->
</div>
<!-- end of left column, which has only images actually -->
<!-- RIGHT COLUMN -->
<div class="artwork-rightcolumn">
<!-- RIGHT TOP -->
<div class="artwork-rightcolumn-top">
<!-- date -->
<!-- end of date -->
</div>
<!-- end of right top -->
<!-- biography -->
<div class="des-exh-section">
<p class="label-item des">BIOGRAPHY</p>
{% if contributorbiography['results']['bindings']==[] %}
<p>information not available</p>
{% else %}
<!-- For loop -->
{% for x in contributorbiography['results']['bindings'] %}
<div class="artwork-rightcolumn-bottom">
<!-- left part with the description text already coming in a div from wiki-->
<div class="text-description">
{{ x["text"] | safe }}
</div>
</div>
{% endfor %}
{% endif %}
</div>
<!-- end of biography -->
</div>
<!-- END OF RIGHT COLUMN -->
</div>
<!-- ########################### -->
<!-- END OF BLOCK IMAGE/DATA AND BIO -->
<!-- ############################ -->
<!-- CREATOR OF -->
<div class="artwork-relatedwrapper">
<div class="Heading_C">Creator of</div>
<!-- all the works if any-->
{% for x in contributor_creatorof['results']['bindings'] %}
<div class="artwork-relatedworks">
<!-- image -->
<div class="artwork-relatedworks-img-div">
{% if "image" in x %}
<a href='/artwork?id={{ x["Works"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="artwork-relatedworks-imgs" src='{{ x["image"]["value"] | replace("wiki/File:","wiki/Special:Redirect/file/") }}'>
</a>
<br>
{% else %}
<a href='/artwork?id={{ x["Works"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="artwork-relatedworks-imgs" src="{{ url_for('static', filename='/imgs/Icons/placeholder_no-image2.png') }}">
</a>
<br>
{% endif %}
</div>
<!-- title -->
<div class="artwork-relatedworks-tile">
<a href='/artwork?id={{ x["Works"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>{{ x["WorksLabel"]["value"]}}</a>
</div>
<!-- year -->
<div class="artwork-relatedworks-date">
{% if "dateWorks" in x %}
{{ x["dateWorks"]["value"] | replace("T00:00:00Z", "") }}
{% endif %}
</div>
</div>
{% endfor %}
</div>
<!-- END CREATOR OF -->
<!-- PUBLISHER OF -->
<div class="artwork-relatedwrapper">
<div class="Heading_C">Publisher of</div>
<!-- all the works if any-->
{% for x in contributor_publisherof['results']['bindings'] %}
<div class="artwork-relatedworks">
<!-- image -->
<div class="artwork-relatedworks-img-div">
{% if "image" in x %}
<a href='/artwork?id={{ x["Works"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="artwork-relatedworks-imgs" src='{{ x["image"]["value"] | replace("wiki/File:","wiki/Special:Redirect/file/") }}'>
</a>
<br>
{% else %}
<a href='/artwork?id={{ x["Works"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="artwork-relatedworks-imgs" src="{{ url_for('static', filename='/imgs/Icons/placeholder_no-image2.png') }}">
</a>
<br>
{% endif %}
</div>
<!-- title -->
<div class="artwork-relatedworks-tile">
<a href='/artwork?id={{ x["Works"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>{{ x["WorksLabel"]["value"]}}</a>
</div>
<!-- year -->
<div class="artwork-relatedworks-date">
{% if "dateWorks" in x %}
{{ x["dateWorks"]["value"] | replace("T00:00:00Z", "") }}
{% endif %}
</div>
</div>
{% endfor %}
</div>
<!-- END PUBLISHER OF -->
</div>
<!-- END OF OVERALL BLOCK -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tiny-slider/2.9.2/min/tiny-slider.js"></script>
<script type="text/javascript">
var slider = tns({
container: '.my-slider',
items: 1,
responsive: {
640: {
edgePadding: 20,
gutter: 20,
items: 1
},
700: {
gutter: 30
},
900: {
items: 1
}
}
});
</script>
{% endblock content %}

13
templates/home.html

@ -3,14 +3,6 @@
<!-- BANNER -->
<!--
* It needs a place holder for video (I think Lozana will send it)
* It needs the two buttons (see zines + other thing). You can put empty a hrefs and I will add the hyperlink after.
* I have retrieved an array from the last images added (3 currently).
- If you need more images tell me and I will modify the python script, this would be super easy
- Feel free to add the classs/ids of your choice.
- I was unsure also if you needed each image to have a different class but I have improvised something to do so. Once the app is serving you can see 3 different classes : banner-image-0, banner-image-1, banner-image-2
-->
<div id="home-top-div">
@ -71,10 +63,11 @@
</a> <br>
<span class="date">
{% if "date" in x %}
{{ x["date"]["value"] | replace("T00:00:00Z", "") }}
{{ x["date"]["value"][:-16] }}
{% endif %}
</span>
{% endif %}
</div>
</div>

2
templates/layout.html

@ -109,7 +109,7 @@
</div>
</div>
<div id="footer-contact-form">
<div id="footer-title-contact"><p>SUPPORT THE DEVELOPMENT OF THE DAAP</p></div>
<div id="footer-title-contact"><p>SUPPORT THE DAAP</p></div>
<div id="secondary-button"><a class="footer-contact" href="https://localgiving.org/charity/banner-repeater/"><div class="secondary-button bluebutton" id="contactform"><span>DONATE</span></div></a></div>
</div>
</div>

149
templates/newestindex.html

@ -1,149 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div id="selfpublishedindex-all">
<div class="pagetitle" id="selfpublishedindex-title">INDEX BY PUBLICATION DATE FROM NEWEST</div>
<div id="selfpublishedindex-grid">
{% for x in results['results']['bindings']%}
<div class="selfpublishedindex-items">
<div class="selfpublishedindex-items-top">
{% if "image" in x %}
<a href='/artwork?id={{ x["work"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="selfpublishedindex-imgs" src='{{ x["image"]["value"] | replace("wiki/File:","wiki/Special:Redirect/file/") }}'>
</a> <br>
{% else %}
<a href='/artwork?id={{ x["work"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
<img class="selfpublishedindex-imgs" src="{{ url_for('static', filename='/imgs/Icons/placeholder_no-image2.png') }}"><br>
</a>
{% endif %}
</div>
<div class="selfpublishedindex-items-bottom">
<a class="title" href='/artwork?id={{ x["work"]["value"] | replace("http://daap.bannerrepeater.org/entity/", "") }}'>
{{ x["workLabel"]["value"]}}
</a> <br>
<span class="date">
{% if "date" in x %}
{{ x["date"]["value"] | replace("T00:00:00Z", "") }}
</span>
{% endif %}
</div>
</div>
{% endfor %}
</div>
<ul id="pagin" class="browsethearchive-pagination">
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
// pagination script w/ support from @biberman on stackoverflow - big thanks!
let startPage;
const pageSize = 24;
const totalSlidePage = 5;
const pageCount = Math.ceil($(".selfpublishedindex-items").length / pageSize);
const slideRange = Math.floor(totalSlidePage / 2);
slide = function() {
startPage = $("#pagin li a.current").parent().index();
let paginationStart = (startPage - slideRange) <= 1 ? 0 :
(startPage >= (pageCount - slideRange) ? (pageCount - totalSlidePage) :
(startPage - slideRange - 1));
$("#pagin li").hide();
for (let t = paginationStart; t < (paginationStart + totalSlidePage); t++) {
$("#pagin li").eq(t + 1).show();
}
next.show();
prev.show();
if (startPage == 1) {
prev.hide();
}
if (startPage == pageCount ) {
next.hide();
}
}
showPage = function() {
console.log(startPage);
$(".selfpublishedindex-items").hide();
$(".selfpublishedindex-items").each(function(n) {
if (n >= pageSize * (startPage - 1) && n < pageSize * startPage)
$(this).show();
});
}
for (let i = 0 ; i < pageCount; i++) {
$("#pagin").append('<li><a href="#">' + (i + 1) + '</a></li> ');
if (i > pageSize) {
$("#pagin li").eq(i).hide();
}
}
let prev = $("<li/>").addClass("prev").html("Prev").click(function() {
let prevLi = $("#pagin li a.current").parent().prev().find("a");
if (prevLi[0]) {
$("#pagin li a.current").removeClass("current");
prevLi.addClass("current");
}
slide();