예제 #1
0
 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'
예제 #2
0
    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'
예제 #3
0
 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'
예제 #4
0
    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
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
    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)
예제 #12
0
 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)
예제 #13
0
 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)
예제 #14
0
    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)
예제 #15
0
    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)
예제 #16
0
    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)
예제 #17
0
    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)
예제 #18
0
 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
예제 #19
0
    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)
예제 #20
0
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')
예제 #21
0
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')
예제 #22
0
    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
예제 #23
0
 def test_validate_og_lead_image_valid(self):
     image = get_content_image(self.obj)
     self.assertTrue(validate_og_lead_image(image))
예제 #24
0
 def test_validate_og_lead_image_valid(self):
     image = get_content_image(self.obj)
     self.assertTrue(validate_og_lead_image(image))