Example #1
0
def update_opengraphable_objects(context, new_ct):
    g_marker = queryUtility(IOpengraphMarkerUtility)
    if not g_marker:
        return
    options = IAnnotations(context)

    ct = getToolByName(context, 'portal_catalog')

    olds_pt = options.get('old_content_types', [])
    if new_ct == olds_pt:
        return
    adds = []
    for new in new_ct:
        if new in olds_pt:
            olds_pt.remove(new)
        else:
            adds.append(new)

    nb_items, bad_items = g_marker.update(context, adds, olds_pt)
    updated = u'%d %s' % (nb_items, _(u'objects updated.'))
    if not bad_items:
        message = updated
    else:
        message = u'%s, %d %s: %s' % (updated,
                                      len(bad_items),
                                      _(u'update(s) on object(s) failed'),
                                      ','.join(bad_items), )
    pu = getToolByName(context, 'plone_utils')
    pu.addPortalMessage(message)
def update_opengraphable_objects(context, new_ct):
    g_marker = queryUtility(IOpengraphMarkerUtility)
    if not g_marker:
        return

    ct = getToolByName(context, 'portal_catalog')
    query = {'object_provides':
                'collective.opengraph.interfaces.IOpengraphable'}
    pt = [item.portal_type for item in ct.searchResults(query)]
    olds_pt = list(set(pt))

    adds = []
    for new in new_ct:
        if new in olds_pt:
            olds_pt.remove(new)
        else:
            adds.append(new)
    if len(olds_pt)==0 and len(adds)==0:
        return

    nb_items, bad_items = g_marker.update(context, adds, olds_pt)
    updated = u'%d %s' % (nb_items, _(u'objects updated.'))
    if not bad_items:
        message = updated
    else:
        message = u'%s, %d %s: %s' % (updated,
                                      len(bad_items),
                                      _(u'update(s) on object(s) failed'),
                                      ','.join(bad_items), )
    pu = getToolByName(context, 'plone_utils')
    pu.addPortalMessage(message)
Example #3
0
def update_opengraphable_objects(context, new_ct):
    g_marker = queryUtility(IOpengraphMarkerUtility)
    if not g_marker:
        return

    ct = getToolByName(context, 'portal_catalog')
    query = {
        'object_provides': 'collective.opengraph.interfaces.IOpengraphable'
    }
    pt = [item.portal_type for item in ct.searchResults(query)]
    olds_pt = list(set(pt))

    adds = []
    for new in new_ct:
        if new in olds_pt:
            olds_pt.remove(new)
        else:
            adds.append(new)
    if len(olds_pt) == 0 and len(adds) == 0:
        return

    nb_items, bad_items = g_marker.update(context, adds, olds_pt)
    updated = u'%d %s' % (nb_items, _(u'objects updated.'))
    if not bad_items:
        message = updated
    else:
        message = u'%s, %d %s: %s' % (
            updated,
            len(bad_items),
            _(u'update(s) on object(s) failed'),
            ','.join(bad_items),
        )
    pu = getToolByName(context, 'plone_utils')
    pu.addPortalMessage(message)
Example #4
0
class IOpengraphSettings(Interface):
    """Opengraph default settings
    """

    app_id = schema.TextLine(title=_(u"Facebook app id"), required=False)

    api_secret = schema.TextLine(title=_(u"Facebook api secret"),
                                 required=False)

    admins = schema.TextLine(title=_(u"Admins"), required=False)

    default_type = schema.Choice(
        title=_(u"Default type"),
        description=_(u"A default opengraph type metatag"),
        required=True,
        vocabulary="collective.opengraph.types",
    )

    types = schema.List(title=_(u'Type of contents'),
                        required=False,
                        default=[],
                        description=_(u"A list of types which can be selected "
                                      "for opengraph type metatag"),
                        value_type=schema.TextLine(title=u"Type"))

    content_types = schema.List(
        title=_(u'Content types'),
        required=False,
        description=_(u"A list of types which can be tagged "
                      "by opengraph metatag"),
        value_type=schema.Choice(
            title=_(u"Content types"),
            source="plone.app.vocabularies.ReallyUserFriendlyTypes"))
Example #5
0
class IOpengraphMetatags(Interface):
    """
    Returns opengraph metadata
    """

    metatags = schema.Dict(
        title = _(u'List of opengraph metatags'),
        required = True,
        default = {},
        description = _(u"A dict of opengraph metatags "
                         "which will be used by the opengraph viewlet"),
	key_type = schema.TextLine(title=u"Metatag name"),
        value_type = schema.TextLine(title=u"Metatag value"))
Example #6
0
class OpengraphControlpanelForm(extensible.ExtensibleForm, form.EditForm):
    successMessage = _(u'Data successfully updated.')
    noChangesMessage = _(u'No changes were applied.')
    formErrorsMessage = _(u"There were some errors.")

    form.extends(form.EditForm, ignoreButtons=True)
    fields = field.Fields(IOpengraphSettings)
    label = _(u'Configure Collective Opengraph')

    def __init__(self, context, request):
        super(OpengraphControlpanelForm, self).__init__(context, request)
        self.ptool = getToolByName(self.context, 'plone_utils')

    @button.buttonAndHandler(_(u'Apply'), name='apply')
    def handle_apply(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        registry = getUtility(IRegistry)
        settings = registry.forInterface(IOpengraphSettings, check=False)
        IAnnotations(
            self.context)['old_content_types'] = settings.content_types

        changes = self.applyChanges(data)
        if changes:
            self.status = self.successMessage
            if not self.context.restrictedTraverse(
                    '@@opengraph_sitewide_enabled')():
                notify(OpengraphSettingsEvent(self.context, data))
        else:
            self.status = self.noChangesMessage

        self.ptool.addPortalMessage(self.status, 'info')
        self.request.response.redirect(self.back_link)

    @button.buttonAndHandler(_(u'Cancel'), name='cancel')
    def handle_cancel(self, action):
        self.ptool.addPortalMessage(self.noChangesMessage, 'info')
        self.request.response.redirect(self.back_link)

    @property
    def back_link(self):
        return back_to_controlpanel(self)['url']
Example #7
0
 def __call__(self):
     noLongerProvides(self.context, IOpengraphable)
     plone_utils = getToolByName(self.context, 'plone_utils')
     message = _(u"The opengraph tags has been disabled")
     plone_utils.addPortalMessage(message)
     self.request.response.redirect(self.context.absolute_url())
Example #8
0
 def __call__(self):
     alsoProvides(self.context, IOpengraphable)
     plone_utils = getToolByName(self.context, 'plone_utils')
     plone_utils.addPortalMessage(_(u"The opengraph tags has been enabled"))
     self.request.response.redirect(self.context.absolute_url())
Example #9
0
 def __call__(self):
     noLongerProvides(self.context, IOpengraphable)
     plone_utils = getToolByName(self.context, 'plone_utils')
     message = _(u"The opengraph tags has been disabled")
     plone_utils.addPortalMessage(message)
     self.request.response.redirect(self.context.absolute_url())
Example #10
0
 def __call__(self):
     alsoProvides(self.context, IOpengraphable)
     plone_utils = getToolByName(self.context, 'plone_utils')
     plone_utils.addPortalMessage(_(u"The opengraph tags has been enabled"))
     self.request.response.redirect(self.context.absolute_url())