Skip to content

Commit

Permalink
Merge 6be1abd into 4ee39c0
Browse files Browse the repository at this point in the history
  • Loading branch information
hvelarde committed Sep 5, 2017
2 parents 4ee39c0 + 6be1abd commit 0f7dc99
Show file tree
Hide file tree
Showing 11 changed files with 192 additions and 357 deletions.
21 changes: 8 additions & 13 deletions sc/social/like/browser/helper.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from Acquisition import aq_inner
from plone import api
from plone.app.layout.globals.interfaces import IViewView
from plone.memoize.view import memoize
from plone.memoize.view import memoize_contextless
Expand All @@ -8,26 +9,18 @@
from sc.social.like.interfaces import IHelperView
from sc.social.like.interfaces import ISocialLikeSettings
from sc.social.like.plugins import IPlugin
from zope.component import getMultiAdapter
from zope.component import getUtilitiesFor
from zope.component import getUtility
from zope.interface import implementer


@implementer(IHelperView)
class HelperView(BrowserView):
""" Social Like configuration helpers
"""
"""Social Like configuration helpers."""

def __init__(self, context, request, *args, **kwargs):
super(HelperView, self).__init__(context, request, *args, **kwargs)
context = aq_inner(context)
self.context = context
self.portal_state = getMultiAdapter((self.context, self.request),
name=u'plone_portal_state')
self.portal = self.portal_state.portal()
self.context_state = getMultiAdapter((self.context, self.request),
name=u'plone_context_state')
def __init__(self, context, request):
self.context = aq_inner(context)
self.request = request

@memoize_contextless
def configs(self):
Expand Down Expand Up @@ -76,4 +69,6 @@ def typebutton(self):

@memoize
def view_template_id(self):
return self.context_state.view_template_id()
context_state = api.content.get_view(
'plone_context_state', self.context, self.request)
return context_state.view_template_id()
7 changes: 1 addition & 6 deletions sc/social/like/browser/socialikes.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
from plone import api
from plone.api.exc import InvalidParameterError
from Products.Five import BrowserView
from sc.social.like.interfaces import ISocialLikes
from sc.social.like.interfaces import ISocialLikeSettings
Expand All @@ -20,9 +19,5 @@ def __init__(self, context, request):
def enabled(self):
"""Validates if social bookmarks should be enabled in this context."""
record = ISocialLikeSettings.__identifier__ + '.enabled_portal_types'
try:
enabled_portal_types = api.portal.get_registry_record(record)
except InvalidParameterError:
enabled_portal_types = []

enabled_portal_types = api.portal.get_registry_record(record, default=[])
return self.context.portal_type in enabled_portal_types
21 changes: 16 additions & 5 deletions sc/social/like/browser/templates/metadata.pt
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
<tal:metas i18n:domain="sc.social.like" tal:condition="view/enabled">
<tal:plugin tal:repeat="plugin view/plugins">
<tal:replace replace="structure plugin/html" />
</tal:plugin>
</tal:metas>
<meta property="og:title" tal:attributes="content view/title" />
<meta property="og:description" tal:attributes="content view/description" />
<meta property="og:type" tal:attributes="content view/type" />
<meta property="og:url" tal:attributes="content view/canonical_url" />
<meta property="og:image" tal:attributes="content view/image_url" />
<tal:image tal:condition="nocall:view/image">
<meta property="og:image:height" tal:attributes="content view/image_height" />
<meta property="og:image:width" tal:attributes="content view/image_width" />
<meta property="og:image:type" tal:attributes="content view/image_type" />
</tal:image>
<meta property="og:locale" tal:attributes="content view/language" />
<meta property="og:site_name" tal:attributes="content view/site_name" />

<tal:plugin tal:repeat="plugin view/plugins">
<tal:replace replace="structure plugin/html" />
</tal:plugin>
79 changes: 67 additions & 12 deletions sc/social/like/browser/viewlets.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
# -*- coding: utf-8 -*-
from Acquisition import aq_inner
from plone import api
from plone.api.exc import InvalidParameterError
from plone.app.layout.viewlets import ViewletBase
from plone.memoize.view import memoize
from plone.registry.interfaces import IRegistry
from Products.CMFCore.WorkflowCore import WorkflowException
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from sc.social.like.behaviors import ISocialMedia
from sc.social.like.interfaces import ISocialLikeSettings
from sc.social.like.plugins.facebook.utils import facebook_language
from sc.social.like.utils import get_content_image
from sc.social.like.utils import get_language
from zope.component import getMultiAdapter
from zope.component import getUtility


class BaseLikeViewlet(ViewletBase):
Expand Down Expand Up @@ -58,14 +64,29 @@ def update(self):


class SocialMetadataViewlet(BaseLikeViewlet):
"""Viewlet used to insert metadata into page header
"""
render = ViewPageTemplateFile('templates/metadata.pt')
"""Open Graph properties and plugin specific metadata."""

index = ViewPageTemplateFile('templates/metadata.pt')
render_method = 'metadata'

def update(self):
registry = getUtility(IRegistry)
self.settings = registry.forInterface(ISocialLikeSettings)
self.helper = getMultiAdapter((self.context, self.request), name=u'sl_helper')
self.title = self.context.Title()
self.description = self.context.Description()
portal = api.portal.get()
self.site_name = portal.Title()
self.language = facebook_language(get_language(self.context), 'en_US')
self.image = get_content_image(self.context)

def render(self):
if self.enabled():
return self.index()
return ''

def enabled(self):
"""Validates if the viewlet should be enabled for this context
"""
"""Check if the viewlet should be shown in this context."""
template = self.helper.view_template_id()
# If using folder_full_view or all_content, we add metadata
# in order to proper display share buttons for
Expand All @@ -74,10 +95,47 @@ def enabled(self):
return True
return self.helper.enabled(self.view)

def portal_url(self):
portal = api.portal.get()
return portal.absolute_url()

def canonical_url(self):
if ISocialMedia.providedBy(self.context):
return self.context.canonical_url
return self.context.absolute_url()

def image_url(self):
"""Return lead image URL."""
img = self.image
if img:
return img.url
else:
return self.portal_url + '/logo.png'

def image_width(self):
return self.image.width

def image_height(self):
return self.image.height

def image_type(self):
"""Return lead image MIME type."""
try:
return self.image.content_type # Dexterity
except AttributeError:
return self.image.mimetype # Archetypes

def type(self):
context = aq_inner(self.context)
context_state = api.content.get_view('plone_context_state', context, self.request)
if context_state.is_portal_root():
return 'website'
return 'article'


class SocialLikesViewlet(BaseLikeViewlet):
"""Viewlet used to display the buttons
"""
"""Viewlet used to display the buttons."""

render = ViewPageTemplateFile('templates/sociallikes.pt')

@property
Expand All @@ -89,10 +147,7 @@ def render_method(self):

# site specific privacy level check
record = ISocialLikeSettings.__identifier__ + '.do_not_track'
try:
do_not_track = api.portal.get_registry_record(record)
except InvalidParameterError:
do_not_track = False
do_not_track = api.portal.get_registry_record(record, default=False)

if do_not_track:
return 'link'
Expand Down
1 change: 0 additions & 1 deletion sc/social/like/plugins/facebook/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding:utf-8 -*-:

from sc.social.like.plugins import IPlugin
from sc.social.like.plugins import Plugin
from zope.interface import implementer
Expand Down

0 comments on commit 0f7dc99

Please sign in to comment.