def image_url(self): """Return URL to image.""" image = get_content_image(self.context, scale='large') if image: return image.url else: return self.portal_url() + '/logo.png'
def __init__(self, context, request): super(PluginView, self).__init__(context, request) pp = getToolByName(context, 'portal_properties') self.context = context self.title = context.title self.description = context.Description() self.request = request self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.portal = self.portal_state.portal() self.site_url = self.portal_state.portal_url() self.portal_title = self.portal_state.portal_title() self.url = context.absolute_url() self.language = facebook_language(get_language(context), self.language) self.sheet = getattr(pp, 'sc_social_likes_properties', None) self.image = get_content_image(context, width=1200, height=630) if self.sheet: self.fbaction = self.sheet.getProperty("fbaction", "") self.fbapp_id = self.sheet.getProperty("fbapp_id", "") self.fbadmins = self.sheet.getProperty("fbadmins", "") self.button = self.typebutton if self.fbaction == 'share': self.fbclass = 'fb-share-button' else: self.fbclass = 'fb-like'
def __init__(self, context, request): super(PluginView, self).__init__(context, request) pp = getToolByName(context, 'portal_properties') self.context = context self.title = context.title self.description = context.Description() self.request = request self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.portal = self.portal_state.portal() self.site_url = self.portal_state.portal_url() self.portal_title = self.portal_state.portal_title() self.url = context.absolute_url() self.language = facebook_language(get_language(context), self.language) self.sheet = getattr(pp, 'sc_social_likes_properties', None) self.image = get_content_image(context, width=1200, height=630) if self.sheet: self.fbaction = self.sheet.getProperty('fbaction', '') self.fbapp_id = self.sheet.getProperty('fbapp_id', '') self.fbadmins = self.sheet.getProperty('fbadmins', '') self.fbshow_like = 'Like' in self.sheet.getProperty( 'fbbuttons', []) self.fbshow_share = 'Share' in self.sheet.getProperty( 'fbbuttons', []) self.button = self.typebutton
def update(self): registry = getUtility(IRegistry) self.settings = registry.forInterface(ISocialLikeSettings, check=False) 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 test_validate_og_lead_image_invalid_dimensions(self): from sc.social.like.utils import MSG_INVALID_OG_LEAD_IMAGE_DIMENSIONS # HACK: change image scale to test the validator image = get_content_image(self.obj, scale='preview') with self.assertRaises(ValueError): validate_og_lead_image(image) # test validation message try: validate_og_lead_image(image) except ValueError as e: self.assertEqual(str(e), MSG_INVALID_OG_LEAD_IMAGE_DIMENSIONS)
def test_validate_og_lead_image_invalid_aspect_ratio(self): from sc.social.like.utils import MSG_INVALID_OG_LEAD_IMAGE_ASPECT_RATIO set_image_field(self.obj, load_image(768, 768, 'JPG'), 'image/jpeg') image = get_content_image(self.obj) with self.assertRaises(ValueError): validate_og_lead_image(image) # test validation message try: validate_og_lead_image(image) except ValueError as e: self.assertEqual(str(e), MSG_INVALID_OG_LEAD_IMAGE_ASPECT_RATIO)
def test_validate_og_lead_image_invalid_mime_type(self): from sc.social.like.utils import MSG_INVALID_OG_LEAD_IMAGE_MIME_TYPE image = get_content_image(self.obj) # HACK: change image MIME type to test the validator image.mimetype = 'image/tiff' with self.assertRaises(ValueError): validate_og_lead_image(image) # test validation message try: validate_og_lead_image(image) except ValueError as e: self.assertEqual(str(e), MSG_INVALID_OG_LEAD_IMAGE_MIME_TYPE)
def __init__(self, context, request): self.context = context self.request = request # FIXME: the following could rise unexpected exceptions # move it to a new setup() method # see: http://docs.plone.org/develop/plone/views/browserviews.html#creating-a-view self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.portal = self.portal_state.portal() self.site_url = self.portal_state.portal_url() self.portal_title = self.portal_state.portal_title() self.url = context.absolute_url() self.image = get_content_image(context, scale='large') self.language = get_language(context)
def test_validate_og_lead_image_invalid_size(self): from sc.social.like.config import OG_LEAD_IMAGE_MAX_SIZE from sc.social.like.utils import MSG_INVALID_OG_LEAD_IMAGE_SIZE image = get_content_image(self.obj) # HACK: change image scale data to test the validator image.data.data = get_random_string(OG_LEAD_IMAGE_MAX_SIZE + 1) with self.assertRaises(ValueError): validate_og_lead_image(image) # test validation message try: validate_og_lead_image(image) except ValueError as e: self.assertEqual(str(e), MSG_INVALID_OG_LEAD_IMAGE_SIZE)
def __init__(self, context, request): super(PluginView, self).__init__(context, request) pp = getToolByName(context, 'portal_properties') self.context = context self.request = request self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.portal = self.portal_state.portal() self.site_url = self.portal_state.portal_url() self.portal_title = self.portal_state.portal_title() self.url = context.absolute_url() self.image = get_content_image(context, scale='large') self.language = get_language(context) self.sheet = getattr(pp, 'sc_social_likes_properties', None)
def __init__(self, context, request): self.context = context self.request = request # FIXME: the following could rise unexpected exceptions # move it to a new setup() method # see: http://docs.plone.org/develop/plone/views/browserviews.html#creating-a-view self.title = context.title self.description = context.Description() self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.portal = self.portal_state.portal() self.site_url = self.portal_state.portal_url() self.portal_title = self.portal_state.portal_title() self.url = context.absolute_url() self.language = facebook_language(get_language(context), self.language) self.image = get_content_image(context, width=1200, height=630) self.typebutton # XXX: needed to initialize self.width
def __init__(self, context, request): super(PluginView, self).__init__(context, request) pp = getToolByName(context, 'portal_properties') self.context = context self.request = request self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.portal = self.portal_state.portal() self.site_url = self.portal_state.portal_url() self.portal_title = self.portal_state.portal_title() self.url = context.absolute_url() self.image = get_content_image(context, scale='large') languages = self.request.get('HTTP_ACCEPT_LANGUAGE', '').split(';')[0].split(',') self.language = languages[0] if languages else self.language self.sheet = getattr(pp, 'sc_social_likes_properties', None)
def check_sharing_best_practices(obj, event): """Check if content follows social networks sharing best practices as defined by Twitter and Facebook. """ record = ISocialLikeSettings.__identifier__ + '.validation_enabled' validation_enabled = api.portal.get_registry_record(record, default=False) if not validation_enabled: return try: review_state = api.content.get_state(obj) except WorkflowException: # images and files have no associated workflow by default review_state = 'published' if review_state not in ('published', ): return # no need to validate request = obj.REQUEST title = getattr(obj, 'title', '') try: validate_og_title(title) except ValueError as e: api.portal.show_message(message=str(e), request=request, type='warning') description = getattr(obj, 'description', '') try: validate_og_description(description) except ValueError as e: api.portal.show_message(message=str(e), request=request, type='warning') image = get_content_image(obj) try: validate_og_lead_image(image) except ValueError as e: api.portal.show_message(message=str(e), request=request, type='warning')
def __init__(self, context, request): super(PluginView, self).__init__(context, request) pp = getToolByName(context, 'portal_properties') self.context = context self.title = context.title self.description = context.Description() self.request = request self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') self.portal = self.portal_state.portal() self.site_url = self.portal_state.portal_url() self.portal_title = self.portal_state.portal_title() self.url = context.absolute_url() languages = self.request.get('HTTP_ACCEPT_LANGUAGE', '').split(';')[0].split(',') self.language = facebook_language(languages, self.language) self.sheet = getattr(pp, 'sc_social_likes_properties', None) self.image = get_content_image(context, width=200, height=200) if self.sheet: self.fbaction = self.sheet.getProperty("fbaction", "") self.fbapp_id = self.sheet.getProperty("fbapp_id", "") self.fbadmins = self.sheet.getProperty("fbadmins", "") self.button = self.typebutton
def test_validate_og_lead_image_valid(self): image = get_content_image(self.obj) self.assertTrue(validate_og_lead_image(image))