Skip to content
16 changes: 16 additions & 0 deletions components/tools/OmeroWeb/omeroweb/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -539,6 +539,22 @@ def leave_none_unset_int(s):
"omero.web.public.cache.timeout":
["PUBLIC_CACHE_TIMEOUT", 60 * 60 * 24, int, None],

# Social media integration
"omero.web.sharing.twitter":
["SHARING_TWITTER",
'{}',
json.loads,
("Dictionary of `server-name: @twitter-site-username`, where "
"server-name matches a name from `omero.web.server_list`. "
"For example: ``'{\"omero\": \"@openmicroscopy\"}'``")],
"omero.web.sharing.opengraph":
["SHARING_OPENGRAPH",
'{}',
json.loads,
("Dictionary of `server-name: site-name`, where "
"server-name matches a name from `omero.web.server_list`. "
"For example: ``'{\"omero\": \"Open Microscopy\"}'``")],

# Application configuration
"omero.web.server_list":
["SERVER_LIST",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{% extends "webgateway/core_html.html" %}
{% load i18n %}
{% load common_filters %}

{% comment %}
<!--
Expand Down Expand Up @@ -38,6 +39,24 @@
<link rel="stylesheet" type="text/css" href="{% static "webgateway/css/omero_image.css"|add:url_suffix %}" media="all" />
<link rel="stylesheet" type="text/css" href="{% static "3rdparty/panojs-2.0.0/panojs.css" %}" media="all" />

{% if opengraph %}
<meta name="og:title" content="{{ image.getName|escape }}">
<meta name="og:type" content="website">
<meta name="og:site_name" content="{{ opengraph }}">
<meta name="og:description" content="{{ image.getDescription|default:image.getOwner.getName|escape }}">
<meta name="og:url" content="{{ page_url }}">
<meta name="og:image" content="{{ image_preview }}512/">
{% endif %}

{% if twitter %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{ twitter|escape }}">
<meta name="twitter:title" content="{{ image.getName|truncateafter:'67'|escape }}">
<meta name="twitter:description" content="{{ image.getDescription|default:image.getOwner.getName|truncateafter:'197'|escape }}">
<meta name="twitter:creator" content="{{ twitter|escape }}">
<meta name="twitter:image" content="{{ image_preview }}280/">
{% endif %}

{% endblock %}

{% block script %}
Expand Down
32 changes: 32 additions & 0 deletions components/tools/OmeroWeb/omeroweb/webgateway/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
from omero.util.decorators import timeit, TimeIt
from omeroweb.http import HttpJavascriptResponse, \
HttpJavascriptResponseServerError
from omeroweb.connector import Server

import glob

Expand Down Expand Up @@ -2250,6 +2251,9 @@ def full_viewer(request, iid, conn=None, **kwargs):
@return: html page of image and metadata
"""

server_id = request.session['connector'].server_id
server_name = Server.get(server_id).server

rid = getImgDetailsFromReq(request)
server_settings = request.session.get('server_settings', {}) \
.get('viewer', {})
Expand All @@ -2261,6 +2265,29 @@ def full_viewer(request, iid, conn=None, **kwargs):
if image is None:
logger.debug("(a)Image %s not found..." % (str(iid)))
raise Http404

opengraph = None
twitter = None
image_preview = None
page_url = None

if hasattr(settings, 'SHARING_OPENGRAPH'):
opengraph = settings.SHARING_OPENGRAPH.get(server_name)
logger.debug('Open Graph enabled: %s', opengraph)

if hasattr(settings, 'SHARING_TWITTER'):
twitter = settings.SHARING_TWITTER.get(server_name)
logger.debug('Twitter enabled: %s', twitter)

if opengraph or twitter:
urlargs = {'iid': iid}
prefix = kwargs.get(
'thumbprefix', 'webgateway.views.render_thumbnail')
image_preview = request.build_absolute_uri(
reverse(prefix, kwargs=urlargs))
page_url = request.build_absolute_uri(
reverse('webgateway.views.full_viewer', kwargs=urlargs))

d = {'blitzcon': conn,
'image': image,
'opts': rid,
Expand All @@ -2272,6 +2299,11 @@ def full_viewer(request, iid, conn=None, **kwargs):
# remove any trailing slash
'viewport_server', reverse('webgateway')).rstrip('/'),

'opengraph': opengraph,
'twitter': twitter,
'image_preview': image_preview,
'page_url': page_url,

'object': 'image:%i' % int(iid)}

template = kwargs.get('template',
Expand Down