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',