diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py
index 6925daea5f4..c2b374d113b 100644
--- a/components/tools/OmeroWeb/omeroweb/settings.py
+++ b/components/tools/OmeroWeb/omeroweb/settings.py
@@ -506,6 +506,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",
diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html
index f7b432e82be..b86f5c5603f 100644
--- a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html
+++ b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html
@@ -1,5 +1,6 @@
{% extends "webgateway/core_html.html" %}
{% load i18n %}
+{% load common_filters %}
{% comment %}
+{% if opengraph %}
+
+
+
+
+
+
+{% endif %}
+
+{% if twitter %}
+
+
+
+
+
+
+{% endif %}
+
{% endblock %}
{% block script %}
diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py
index 37bb99dcb2b..4b1894da3bf 100644
--- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py
+++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py
@@ -45,6 +45,7 @@
from omero.util.decorators import timeit, TimeIt
from omeroweb.http import HttpJavascriptResponse, HttpJsonResponse, \
HttpJavascriptResponseServerError
+from omeroweb.connector import Server
import glob
@@ -1941,6 +1942,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', {})
@@ -1952,6 +1956,31 @@ 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:
+ prefix = kwargs.get(
+ 'thumbprefix', 'webgateway.views.render_thumbnail')
+
+ def urlprefix(iid):
+ return reverse(prefix, args=(iid,))
+
+ image_preview = request.build_absolute_uri(urlprefix(iid))
+ page_url = request.build_absolute_uri(reverse(
+ 'webgateway.views.full_viewer', args=(iid,)))
+
d = {'blitzcon': conn,
'image': image,
'opts': rid,
@@ -1963,6 +1992,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',