diff --git a/api.py b/api.py index de2ded114cb2787cf245054a1854b4bfe393403e..77dfe89bbf3be2ffa71264c2257cb3cfc640f8a8 100644 --- a/api.py +++ b/api.py @@ -14,7 +14,6 @@ session = BaseXClient.Session('localhost', 1984, 'admin', 'admin') def main(): #globvar = session.query("db:open(\"Holzschnitt\")") session.execute("open Holzschnitt") - query = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[position() lt 5]) return $x") merke = [] for i in range(1,5): @@ -23,7 +22,6 @@ def main(): title = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[position() =" + str(i) +" ]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x" ).execute() eintrag = {"url" : url, "actor" : actor, "title" : title} merke.append(eintrag) - query.close() #tree = ET.parse(globvar) @@ -32,9 +30,83 @@ def main(): #session.query("db:open(\"Holzschnitt\")").execute() - return render_template('index.html', objects = merke) + return render_template('index.html', objects = merke, searchBool = False, text = '') +@app.route('/search', methods=['POST', 'GET']) +def search(): + if request.method=='GET': + merke = [] + for i in range(1,5): + url = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[position() =" + str(i) +" ]/bildLink/text()) return $x" ).execute() + actor = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[position() =" + str(i) +" ]/descriptiveMetadata/actor/text()) return $x" ).execute() + title = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[position() =" + str(i) +" ]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x" ).execute() + eintrag = {"url" : url, "actor" : actor, "title" : title} + merke.append(eintrag) + return render_template('index.html', objects = merke, searchBool = False, text = '') + + text = request.form['holzschnitte'] + #suche nach Künstler: + #query = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/actor[contains(text(), " + text + ")]]) return $x") + merke = [] + urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/actor[contains(text(),'" + text + "')]]/bildLink/text()) return $x") + actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/actor[contains(text(),'" + text + "')]]/descriptiveMetadata/actor/text()) return $x") + titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/actor[contains(text(),'" + text + "')]]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x") + urlList = [] + actorList = [] + titleList = [] + + for a,url in urlQuery.iter(): + urlList.append(url) + + for b,actor in actorQuery.iter(): + actorList.append(actor) + + for c,title in titleQuery.iter(): + titleList.append(title) + + + for i in range(0, len(urlList)): + url = urlList[i] + actor = actorList[i] + title = titleList[i] + eintrag = {"url" : url, "actor" : actor, "title" : title} + merke.append(eintrag) + + urlQuery.close() + actorQuery.close() + titleQuery.close() + + #Suche nach Titel: + urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentificationWrap/title[contains(text(),'" + text + "')]]/bildLink/text()) return $x") + actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentificationWrap/title[contains(text(),'" + text + "')]]/descriptiveMetadata/actor/text()) return $x") + titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentificationWrap/title[contains(text(),'" + text + "')]]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x") + urlList = [] + actorList = [] + titleList = [] + + for a,url in urlQuery.iter(): + urlList.append(url) + + for b,actor in actorQuery.iter(): + actorList.append(actor) + + for c,title in titleQuery.iter(): + titleList.append(title) + + + for i in range(0, len(urlList)): + url = urlList[i] + actor = actorList[i] + title = titleList[i] + eintrag = {"url" : url, "actor" : actor, "title" : title} + merke.append(eintrag) + + urlQuery.close() + actorQuery.close() + titleQuery.close() + + return render_template('index.html', objects = merke, searchBool = True, text = text) if __name__ == "__main__": diff --git a/templates/index.html b/templates/index.html index 8964da956d448c06ca7517916f67ad265ad3db3a..8720509885e5d70a83812f99fec5ec511e299a40 100644 --- a/templates/index.html +++ b/templates/index.html @@ -9,12 +9,12 @@ </head> <body id="Startseite"> <div class="suchfeld"> - <form> - <a href="#"><input type="search" name="Holzschnitte"></a> + <form action="{{ url_for('search') }}" method="post"> + <input type="text" name="holzschnitte"> <datalist id="Holzschnitte"> <option value="Autor"> </datalist> - <button class="btn">suchen</button> + <input type="submit" value="suchen"> </form> </div> <div class="menue"> @@ -23,103 +23,55 @@ <li><a href="">Filter</a></li> </ul> </div> - <ul> - {% for object in objects %} - <li>{{ loop.index }} <br> - Künstler: {{ object.actor }} <br> - Titel: {{ object.title }} <br> - <img src=" {{ object.url }}" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> </li> - {% endfor %} - </ul> - <div id="gallery"> - <div class="row"> -<!-- {% for object in objects %} - <div class="column"> - <figure class="Bild{{ loop.index }}"> - <img src="{{ object.bildLink }}" onclick="openModal();currentSlide({{ loop.index }})" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> - <figcaption>Informationen zum Bild {{ object.bildLink }}</figcaption> - </figure> - </div> - {% endfor %} - <div class="column"> - <figure class="Bild1"> - <img src="./Bilder/IE1898.224-1.jpg" onclick="openModal();currentSlide(1)" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> - <figcaption>Informationen zum Bild</figcaption> - </figure> - </div> - <div class="column"> - <figure class="Bild2"> - <img src="./Bilder/S2009.259.a-1.jpg" onclick="openModal();currentSlide(2)" class="hover-shadow" style="width: 330px; height: 260px; padding: 10px;"> - <figcaption>Informationen zum Bild</figcaption> - </figure> - </div> - - <div class="column"> - <figure class="Bild3"> - <img src="../xmlProject/Bilder/S2009.197-1.jpg" onclick="openModal();currentSlide(3)" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> - <figcaption>Informationen zum Bild</figcaption> - </figure> - </div> - - <div class="column"> - <figure class="Bild4"> - <img src="../xmlProject/Bilder/S2009.259.b-1.jpg" onclick="openModal();currentSlide(4)" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> - <figcaption>Informationen zum Bild</figcaption> - </figure> - - </div> --> - </div> - - <div id="myModal" class="modal"> - <span class="close cursor" onclick="closeModal()">×</span> - <div class="modal-content"> - - <div class="mySlides"> - <div class="numbertext">1 / 4</div> - <img src="../xmlProject/Bilder/IE1898.224-1.jpg" style="width:100%"> - </div> - - <div class="mySlides"> - <div class="numbertext">2 / 4</div> - <img src="../xmlProject/Bilder/S2009.259.a-1.jpg" style="width:100%"> - </div> - <div class="mySlides"> - <div class="numbertext">3 / 4</div> - <img src="../xmlProject/Bilder/S2009.197-1.jpg" style="width:100%"> - </div> + {% if searchBool %} + <h4> {{ text }} </h4> + {% endif %} - <div class="mySlides"> - <div class="numbertext">4 / 4</div> - <img src="../xmlProject/Bilder/S2009.259.b-1.jpg" style="width:100%"> - </div> - - <a class="prev" onclick="plusSlides(-1)">❮</a> - <a class="next" onclick="plusSlides(1)">❯</a> - - <div class="caption-container"> - <p id="caption"></p> - </div> - <div class="slide"> - <div class="column"> - <img class="demo" src="../xmlProject/Bilder/IE1898.224-1.jpg" onclick="currentSlide(1)" alt="1/4" style="width: 300px; height: 210px; padding: 20px;"> - </div> - - <div class="column"> - <img class="demo" src="../xmlProject/Bilder/S2009.259.a-1.jpg" onclick="currentSlide(2)" alt="2/4" style="width: 300px; height: 210px; padding: 20px;"> - </div> - - <div class="column"> - <img class="demo" src="../xmlProject/Bilder/S2009.197-1.jpg" onclick="currentSlide(3)" alt="3/4" style="width: 300px; height: 210px; padding: 20px;"> - </div> - - <div class="column"> - <img class="demo" src="../xmlProject/Bilder/S2009.259.b-1.jpg" onclick="currentSlide(4)" alt="4/4" style="width: 300px; height: 210px; padding: 20px;"> - </div> - </div> - </div> - </div> + <div id="gallery"> + <div class="row"> + {% for object in objects %} + <div class="column"> + <figure class="{{ loop.index }}"> + {{ loop.index }} + <img src="{{ object.url }}" onclick="openModal();currentSlide(1)" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> + <!-- Hovereffekt muss überarbeitet werden, IST: Beschriftung ü+berlagert sich zur Zeit --> + <figcaption>Künstler: {{ object.actor }} <br> Titel: {{ object.title }} </figcaption> + + </figure> + </div> + <!-- ab hier kann weg - Verlinkung auf Detailseite stattdessen --> + <div id="myModal" class="modal"> + <span class="close cursor" onclick="closeModal()">×</span> + <div class="modal-content"> + + <div class="mySlides"> + <div class="numbertext"> {{ loop.index }} / 4</div> + <img src="{{ object.url }}" style="width:100%"> + </div> + + <a class="prev" onclick="plusSlides(-1)">❮</a> + <a class="next" onclick="plusSlides(1)">❯</a> + + <div class="caption-container"> + <p id="caption"></p> + </div> + + <div class="slide"> + <div class="column"> + <img class="demo" src="{{ object.url }}" onclick="currentSlide(1)" alt="1/4" style="width: 300px; height: 210px; padding: 20px;"> + </div> + </div> + + </div> + </div> + {% endfor %} + </div> </div> + + + + <script> function openModal() { document.getElementById('myModal').style.display = "block";