Add search_embed for bringing search iframes to other pages.

master
voussoir 2021-01-02 13:49:43 -08:00
parent 732c054075
commit 0c3ee6f2d2
6 changed files with 86 additions and 6 deletions

View File

@ -452,6 +452,17 @@ def get_search_core():
}
return final_results
@site.route('/search_embed')
def get_search_embed():
search_results = get_search_core()
response = common.render_template(
request,
'search_embed.html',
results=search_results['results'],
search_kwargs=search_results['search_kwargs'],
)
return response
@site.route('/search')
def get_search_html():
search_results = get_search_core()

View File

@ -15,6 +15,13 @@ input, select, textarea
border-radius: 2px;
}
iframe.embedded_search
{
width: 100%;
max-height: 500px;
border: none;
}
.header_element:hover
{
background-color: var(--color_secondary);

View File

@ -165,6 +165,12 @@ function html_to_element(html)
return template.content.firstElementChild;
}
common.size_iframe_to_content =
function size_iframe_to_content(iframe)
{
iframe.style.height = iframe.contentWindow.document.documentElement.scrollHeight + 'px';
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// HOOKS & ADD-ONS /////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,31 @@
<!DOCTYPE html5>
<html>
<head>
<link rel="stylesheet" href="/static/css/common.css">
<link rel="stylesheet" href="/static/css/etiquette.css">
<link rel="stylesheet" href="/static/css/photo_card.css">
{% if theme %}<link rel="stylesheet" href="/static/css/theme_{{theme}}.css">{% endif %}
<style>
body
{
background-color: initial;
}
</style>
</head>
<body>
<div>
{% import "photo_card.html" as photo_card %}
{% import "album_card.html" as album_card %}
{% for result in results %}
{% if result.__class__.__name__ == 'Photo' %}
{{photo_card.create_photo_card(result, view=search_kwargs["view"])}}
{% elif result.__class__.__name__ == 'Album' %}
{{album_card.create_album_card(result, view=search_kwargs["view"])}}
{% endif %}
{% endfor %}
</div>
</body>
</html>

View File

@ -233,6 +233,18 @@ h2, h3
</div>
{% endif %} <!-- if synonyms -->
{% endif %} <!-- if specific tag and include synonyms -->
{% if specific_tag %}
<div id="hierarchy_recentphotos" class="panel">
<h3><a href="/search?tag_musts={{specific_tag.name}}&orderby=tagged_at-desc">Recent photos</a></h3>
<iframe
class="embedded_search"
src="/search_embed?tag_musts={{specific_tag.name}}&orderby=tagged_at-desc&yield_albums=no&limit=10"
onload="return common.size_iframe_to_content(this);"
>
</iframe>
</div>
{% endif %} <!-- if specific tag -->
</div>
</div>
</body>

View File

@ -14,10 +14,15 @@
<script src="/static/js/spinner.js"></script>
<style>
h2, h3
{
margin-top: 0;
}
#content_body
{
/* overriding common.css here */
display: block;
grid-row-gap: 8px;
grid-auto-rows: max-content;
}
</style>
</head>
@ -29,7 +34,15 @@
<h2 id="display_name">{{user.display_name}}</h2>
<p>ID: <a href="/userid/{{user.id}}">{{user.id}}</a></p>
<p>User since <span title="{{user.created|int|timestamp_to_8601}}">{{user.created|timestamp_to_naturaldate}}.</span></p>
<p><a href="/search?author={{user.username}}">Photos by {{user.display_name}}</a></p>
</div>
<div class="panel">
<h3><a href="/search?author={{user.username}}">Photos by {{user.display_name}}</a></h3>
<iframe
class="embedded_search"
src="/search_embed?author={{user.username}}&orderby=created-desc&yield_albums=no&limit=10"
onload="return common.size_iframe_to_content(this);"
>
</iframe>
</div>
</div>
</body>