From 674fcb7c8e6242be17ea58a270e61a0607c8721b Mon Sep 17 00:00:00 2001 From: Simon Li Date: Mon, 12 Oct 2015 23:31:46 +0100 Subject: [PATCH 1/5] Add support for twitter cards --- components/tools/OmeroWeb/omeroweb/settings.py | 12 ++++++++++++ .../webgateway/viewport/omero_image.html | 9 +++++++++ .../tools/OmeroWeb/omeroweb/webgateway/views.py | 17 +++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index 87b2fb06148..8d386590915 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -481,6 +481,18 @@ def leave_none_unset_int(s): "omero.web.public.cache.timeout": ["PUBLIC_CACHE_TIMEOUT", 60 * 60 * 24, int, None], + # Social media integration + "omero.web.twitter.enabled": + ["TWITTER_ENABLED", + "false", + parse_boolean, + "Enable Twitter cards."], + "omero.web.twitter.siteuser": + ["TWITTER_SITE_USER", + None, + leave_none_unset, + "Twitter site username."], + # 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 c6dfb1836c5..b7fb2a43c2d 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 twitter %} + + + + + + +{% endif %} {% endblock %} {% block script %} diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py index a6001cac20f..eb0abc31b9f 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -1881,6 +1881,20 @@ def full_viewer(request, iid, conn=None, **kwargs): if image is None: logger.debug("(a)Image %s not found..." % (str(iid))) raise Http404 + twitter = None + twitter_img = None + + if settings.TWITTER_ENABLED and hasattr(settings, 'TWITTER_SITE_USER'): + twitter = settings.TWITTER_SITE_USER + if twitter: + prefix = kwargs.get( + 'thumbprefix', 'webgateway.views.render_thumbnail') + + def urlprefix(iid): + return reverse(prefix, args=(iid,)) + + twitter_img = request.build_absolute_uri(urlprefix(iid)) + d = {'blitzcon': conn, 'image': image, 'opts': rid, @@ -1891,6 +1905,9 @@ def full_viewer(request, iid, conn=None, **kwargs): # remove any trailing slash 'viewport_server', reverse('webgateway')).rstrip('/'), + 'twitter': twitter, + 'twitter_img': twitter_img, + 'object': 'image:%i' % int(iid)} template = kwargs.get('template', From bece6e657db8851f11ee81ed0042ab44d24f6f81 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Tue, 15 Dec 2015 17:39:32 +0000 Subject: [PATCH 2/5] Configure Twitter for each individual server Rename property as omero.web.sharing.twitter to provide a namespace for other sharing options. --- components/tools/OmeroWeb/omeroweb/settings.py | 17 +++++++---------- .../tools/OmeroWeb/omeroweb/webgateway/views.py | 10 ++++++++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index 8d386590915..9d574dfd9db 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -482,16 +482,13 @@ def leave_none_unset_int(s): ["PUBLIC_CACHE_TIMEOUT", 60 * 60 * 24, int, None], # Social media integration - "omero.web.twitter.enabled": - ["TWITTER_ENABLED", - "false", - parse_boolean, - "Enable Twitter cards."], - "omero.web.twitter.siteuser": - ["TWITTER_SITE_USER", - None, - leave_none_unset, - "Twitter site username."], + "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\"}'``")], # Application configuration "omero.web.server_list": diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py index eb0abc31b9f..32ae78395fd 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 connector import Server import glob @@ -1873,6 +1874,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) interpolate = request.session['server_settings']['interpolate_pixels'] @@ -1884,8 +1888,8 @@ def full_viewer(request, iid, conn=None, **kwargs): twitter = None twitter_img = None - if settings.TWITTER_ENABLED and hasattr(settings, 'TWITTER_SITE_USER'): - twitter = settings.TWITTER_SITE_USER + if hasattr(settings, 'SHARING_TWITTER'): + twitter = settings.SHARING_TWITTER.get(server_name) if twitter: prefix = kwargs.get( 'thumbprefix', 'webgateway.views.render_thumbnail') @@ -1895,6 +1899,8 @@ def urlprefix(iid): twitter_img = request.build_absolute_uri(urlprefix(iid)) + logger.debug('Twitter enabled: %s %s', twitter, twitter_img) + d = {'blitzcon': conn, 'image': image, 'opts': rid, From c531ee0e71a6d03b597c0ea893ee46a834036f86 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Tue, 15 Dec 2015 19:03:57 +0000 Subject: [PATCH 3/5] Add opengraph (facebook) support --- .../tools/OmeroWeb/omeroweb/settings.py | 7 ++++++ .../webgateway/viewport/omero_image.html | 12 +++++++++- .../OmeroWeb/omeroweb/webgateway/views.py | 23 ++++++++++++++----- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index 9d574dfd9db..445e27e8cee 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -489,6 +489,13 @@ def leave_none_unset_int(s): ("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": 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 b7fb2a43c2d..c15e9137735 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 @@ -43,14 +43,24 @@ +{% 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 32ae78395fd..b2193b7f6fe 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -1885,21 +1885,30 @@ 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 - twitter_img = 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', twitter) if hasattr(settings, 'SHARING_TWITTER'): twitter = settings.SHARING_TWITTER.get(server_name) - if twitter: + 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,)) - twitter_img = request.build_absolute_uri(urlprefix(iid)) - - logger.debug('Twitter enabled: %s %s', twitter, twitter_img) + 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, @@ -1911,8 +1920,10 @@ def urlprefix(iid): # remove any trailing slash 'viewport_server', reverse('webgateway')).rstrip('/'), + 'opengraph': opengraph, 'twitter': twitter, - 'twitter_img': twitter_img, + 'image_preview': image_preview, + 'page_url': page_url, 'object': 'image:%i' % int(iid)} From 0ad2acb60eeb38ef2f7f84c979c1fd2bbef1954e Mon Sep 17 00:00:00 2001 From: Simon Li Date: Thu, 17 Dec 2015 14:15:28 +0000 Subject: [PATCH 4/5] image urls should have a trailing / --- .../webgateway/templates/webgateway/viewport/omero_image.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 c15e9137735..7468106f74c 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 @@ -49,7 +49,7 @@ - + {% endif %} {% if twitter %} @@ -58,7 +58,7 @@ - + {% endif %} {% endblock %} From 7845fd648de04b4488bc894c8975c98e41191787 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Wed, 13 Jan 2016 13:58:33 +0000 Subject: [PATCH 5/5] {} must be quoted to be valid json in settings.py --- components/tools/OmeroWeb/omeroweb/settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index 445e27e8cee..1e970362a0f 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -484,14 +484,14 @@ def leave_none_unset_int(s): # 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`. "