diff --git a/api.py b/api.py index e73a3f951d33b0ff85968e56ab2d0adbb9bd5a90..7b31a95d23e19576fde7506234afbf4b841bb4ff 100644 --- a/api.py +++ b/api.py @@ -50,9 +50,9 @@ def search(): #suche nach Kuenstler: #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/eventWrap/actor/name[contains(text(),'" + text + "')]]/resource/resourceLink/text()) return $x") - actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/eventWrap/actor/name[contains(text(),'" + text + "')]]/descriptiveMetadata/eventWrap/actor/name/text()) return $x") - titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/eventWrap/actor/name[contains(text(),'" + text + "')]]/descriptiveMetadata/objectIdentification/titleSet/title/text()) return $x") + urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/eventWrap/actor/name[contains(lower-case(text()),'" + text.lower() + "')]]/resource/resourceLink/text()) return $x") + actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/eventWrap/actor/name[contains(lower-case(text()),'" + text.lower() + "')]]/descriptiveMetadata/eventWrap/actor/name/text()) return $x") + titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/eventWrap/actor/name[contains(lower-case(text()),'" + text.lower() + "')]]/descriptiveMetadata/objectIdentification/titleSet/title/text()) return $x") urlList = [] actorList = [] titleList = [] @@ -79,9 +79,9 @@ def search(): titleQuery.close() #Suche nach Titel: - urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + text + "')]]/resource/resourceLink/text()) return $x") - actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + text + "')]]/descriptiveMetadata/eventWrap/actor/name/text()) return $x") - titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + text + "')]]/descriptiveMetadata/objectIdentification/titleSet/title/text()) return $x") + urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(lower-case(text()),'" + text.lower() + "')]]/resource/resourceLink/text()) return $x") + actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(lower-case(text()),'" + text.lower() + "')]]/descriptiveMetadata/eventWrap/actor/name/text()) return $x") + titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(lower-case(text()),'" + text.lower() + "')]]/descriptiveMetadata/objectIdentification/titleSet/title/text()) return $x") urlList = [] actorList = [] titleList = [] @@ -248,10 +248,18 @@ def detail(bild): death = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + bild + "')]]/descriptiveMetadata/eventWrap/actor/todesjahr/text()) return $x").execute() place = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + bild + "')]]/descriptiveMetadata/eventWrap/eventPlace/text()) return $x").execute() mase = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + bild + "')]]/descriptiveMetadata/objectIdentification/displayObjectMeasurements/text()) return $x").execute() - + materialsTech = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + bild + "')]]/descriptiveMetadata/eventWrap/materialsTech/text()) return $x") + materials = "" + for a,material in materialsTech.iter(): + materials = materials + str(material) + ", " + + tagQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/objectIdentification/titleSet/title[contains(text(),'" + bild + "')]]/descriptiveMetadata/subjectWrap/subject/term/text()) return $x") + tags = "" + for t,tag in tagQuery.iter(): + tags = tags + str(tag) + ", " kunstler = sendSparqlQuery(actorQuery) kunstlerDict = {"name" : kunstler[0],"geschlecht" : kunstler[1], "geburtsdatum" : kunstler[2],"todesdatum" : kunstler[3],"beschreibung" : kunstler[4]} - merke = {"url" : urlQuery, "actor" : actorQuery, "birth" : birth, "death" : death, "title" : bild, "place" : place, "maße" : mase} + merke = {"url" : urlQuery, "actor" : actorQuery, "birth" : birth, "death" : death, "title" : bild, "place" : place, "maße" : mase, "materials" : materials, "tags" : tags} return render_template('detail.html', object = merke, kunstler = kunstlerDict) diff --git a/static/stylesheet.css b/static/stylesheet.css index 0da6b7584a377975b19d0071430ae3a39d11c1ce..f9ef327eae7e59f8761bf76c3ffa93aced88584c 100644 --- a/static/stylesheet.css +++ b/static/stylesheet.css @@ -57,169 +57,7 @@ li a:hover { box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19); } -#gallery{ - padding: 60px; -} - - -/*Bildergalerie*/ - -* { - box-sizing: border-box; -} - -.row > .column { - padding: 0 8px; -} - -.row:after { - content: ""; - display: table; - clear: both; -} - -.column { - float: left; - width: 25%; -} - -/* The Modal (background) */ -.modal { - display: none; - position: fixed; - z-index: 1; - padding-top: 100px; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: auto; - background-color: black; -} - -/* Modal Content */ -.modal-content { - position: relative; - background-color: #fefefe; - margin: auto; - padding: 0; - width: 90%; - max-width: 1200px; -} - -/* The Close Button */ -.close { - color: white; - position: absolute; - top: 10px; - right: 25px; - font-size: 35px; - font-weight: bold; -} - -.close:hover, -.close:focus { - color: #999; - text-decoration: none; - cursor: pointer; -} - -.mySlides { - display: none; -} - -.cursor { - cursor: pointer -} - -/* Next & previous buttons */ -.prev, -.next { - cursor: pointer; - position: absolute; - top: 50%; - width: auto; - padding: 16px; - margin-top: -50px; - color: white; - font-weight: bold; - font-size: 20px; - transition: 0.6s ease; - border-radius: 0 3px 3px 0; - user-select: none; - -webkit-user-select: none; -} - -/* Position the "next button" to the right */ -.next { - right: 0; - border-radius: 3px 0 0 3px; -} - -/* On hover, add a black background color with a little bit see-through */ -.prev:hover, -.next:hover { - background-color: rgba(0, 0, 0, 0.8); -} -/* Number text (1/3 etc) */ -.numbertext { - color: #f2f2f2; - font-size: 12px; - padding: 8px 12px; - position: absolute; - top: 0; -} - -img { - margin-bottom: -4px; -} - -.caption-container { - text-align: center; - background-color: black; - padding: 2px 16px; - color: white; -} - -.demo { - opacity: 0.6; -} - -.active, -.demo:hover { - opacity: 1; -} - -img.hover-shadow { - transition: 0.3s -} - -.hover-shadow:hover { - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19) -} - -/*Bildbeschreibung*/ -figcaption { - position: absolute; - bottom: -3em; - text-align: center; - line-height: 3em; - white-space: nowrap; - color: #e2e0d9; - background: rgba(0, 0, 0, 0); -} - - -figure:focus figcaption, -figure:hover figcaption { - bottom: 0; - left: 0; - width: 100%; - background: rgba(0, 0, 0, 0.5); - -webkit-transition: 1s; - -} .pagination a { @@ -476,9 +314,80 @@ float: right; text-align: left; } -.img {background: #eee;} +.img { + background: #e2e0d9; + width: 30%; + height: 90%; +} @media all and (min-width: 768px) { .img {text-align:left;-webkit-flex: 1 auto;flex:1 auto;-webkit-order:1;order:1;} .article {-webkit-flex:5 0px;flex:5 0px;-webkit-order:2;order:2;} -} \ No newline at end of file +} + +/* Für Hover und Bildergallerie */ +/*Hover Bild*/ + + .caption-style-1{ + list-style-type: none; + margin: 10px; + padding: 10px; + + } + + + .caption-style-1 li{ + float: left; + padding: 0px; + position: relative; + overflow: hidden; + } + + + .caption-style-1 li:hover .caption{ + opacity: 1; + + } + + .caption-style-1 img{ + margin: 0px; + padding: 0px; + float: left; + z-index: 4; + } + + .caption-style-1 .caption{ + cursor: pointer; + position: absolute; + opacity: 0; + -webkit-transition:all 0.45s ease-in-out; + -moz-transition:all 0.45s ease-in-out; + -o-transition:all 0.45s ease-in-out; + -ms-transition:all 0.45s ease-in-out; + transition:all 0.45s ease-in-out; + + } + + .caption-style-1 .blur{ + background-color: rgba(0,0,0,0.65); + height: 300px; + width: 400px; + z-index: 5; + position: absolute; + } + + + .caption-style-1 .caption-text h1{ + text-transform: uppercase; + font-size: 24px; + } + + .caption-style-1 .caption-text{ + z-index: 10; + color: #fff; + position: absolute; + width: 300px; + height: 200px; + text-align: center; + top:100px; + } \ No newline at end of file diff --git a/templates/detail.html b/templates/detail.html index 80dccfb0901a10aa0638e770c911a1be579d0f08..dd6b1c2698163d67035352ffc3ab65c5f0c2e8c9 100644 --- a/templates/detail.html +++ b/templates/detail.html @@ -32,13 +32,10 @@ <!--Menue Ende!--> <div class="container"> <div class="flex-container"> - <header> - <h1></h1> - </header> <div class="img"> <a href="{{ object.url }}" data-lightbox="bild-1"> - <img src="{{ object.url }}" onclick="openModal();currentSlide(1)" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> + <img src="{{ object.url }}" onclick="openModal();currentSlide(1)" class="hover-shadow" style="width: 70%; height: 100%;"> </a> </div> @@ -49,6 +46,8 @@ <p>Name: {{ object.title }}</p> <p>Ort:{{ object.place }}</p> <p>Maße: {{ object.maße }}</p> + <p>weitere Infos: {{ object.materials }}</p> + <p>Tags: {{ object.tags }}</p> </article> <article class="article"> diff --git a/templates/index.html b/templates/index.html index 42065c12cdf5f685ab0477bef8484a6c31624a9c..8d3ff0665eaf0c410cb4a30b76aaa3fbca0e422a 100644 --- a/templates/index.html +++ b/templates/index.html @@ -28,6 +28,28 @@ <h4> {{ text }} </h4> {% endif %} + <!-- Neue Bildergellerie--> + <div class="container-a1"> + <ul class="caption-style-1"> + {% for object in objects %} + <li> + <img src="{{ object.url }}" style="width: 300px; height: 200px; padding: 35px;"> + <!--<a href="{{ url_for('.detail',bild=object.title) }}">weitere Details</a> --> + <div class="caption"> + <div class="blur"></div> + <div class="caption-text"> + <a href="{{ url_for('.detail',bild=object.title) }}"> + <p>Künstler: {{ object.actor }} </p> + <p>Titel: {{ object.title }}</p> + </a> + </div> + </div> + </li> + {% endfor %} + </ul> + </div> + +<!-- alte Gellerie <div id="gallery"> <div class="row"> {% for object in objects %} @@ -36,83 +58,16 @@ {{ loop.index }} <img src="{{ object.url }}" class="hover-shadow" style="width: 350px; height: 260px; padding: 10px;"> <a href="{{ url_for('.detail',bild=object.title) }}">Details</a> - <!-- Hovereffekt muss überarbeitet werden, IST: Beschriftung ü+berlagert sich zur Zeit --> + <figcaption>Künstler: {{ object.actor }} <br> Titel: {{ object.title }} </figcaption> </figure> </div> {% endfor %} - <!-- ab hier kann weg - Verlinkung auf Detailseite stattdessen --> - <div id="myModal" class="modal"> - <span class="close cursor" onclick="closeModal()">×</span> - <div class="modal-content"> - {% for object in objects %} - <div class="mySlides"> - <div class="numbertext"> {{ loop.index }} </div> - <img src="{{ object.url }}" style="width:100%"> - </div> - {% endfor %} - <a class="prev" onclick="plusSlides(-1)">❮</a> - <a class="next" onclick="plusSlides(1)">❯</a> - <div class="caption-container"> - <p id="caption"></p> - </div> - - {% for object in objects %} - <div class="slide"> - <div class="column"> - <img class="demo" src="{{ object.url }}" onclick="currentSlide({{ loop.index }})" alt="1/4" style="width: 300px; height: 210px; padding: 20px;"> - </div> - </div> - {% endfor %} - - </div> - </div> </div> </div> - - - - - <script> - function openModal() { - document.getElementById('myModal').style.display = "block"; - } - - function closeModal() { - document.getElementById('myModal').style.display = "none"; - } - - var slideIndex = 1; - showSlides(slideIndex); - - function plusSlides(n) { - showSlides(slideIndex += n); - } - - function currentSlide(n) { - showSlides(slideIndex = n); - } - - function showSlides(n) { - var i; - var slides = document.getElementsByClassName("mySlides"); - var dots = document.getElementsByClassName("demo"); - var captionText = document.getElementById("caption"); - if (n > slides.length) {slideIndex = 1} - if (n < 1) {slideIndex = slides.length} - for (i = 0; i < slides.length; i++) { - slides[i].style.display = "none"; - } - for (i = 0; i < dots.length; i++) { - dots[i].className = dots[i].className.replace(" active", ""); - } - slides[slideIndex-1].style.display = "block"; - dots[slideIndex-1].className += " active"; - captionText.innerHTML = dots[slideIndex-1].alt; - } - </script> +--> </html>