class IAddSocialButtonConfig(Schema): code_id = schema.Choice(title=_(u'ID'), source='hexagonit.socialbutton.code-ids') content_types = schema.Set( title=_(u'Content Types'), default=set(u'*'), value_type=schema.Choice( source='hexagonit.socialbutton.content-types')) viewlet_manager = schema.Text( title=_(u'Viewlet Manager'), description=_(u'List names of viewlet manager line by line.'), default=u'plone.belowcontent') view_models = schema.Text( title=_(u'View Models'), description=_( u"List names of view model line by line. For all the views, use '*'" ), default=u'*') view_permission_only = schema.Bool( title=_(u'View permission only'), description=_( u'Display button only for views which has View permission.'), default=True) enabled = schema.Bool(title=_(u'Enabled'), default=True)
class Lang(AllContent): description = _(u'Language code for the site.') def safe_call(self): portal_state = getMultiAdapter((self.context, self.context.REQUEST), name='plone_portal_state') return portal_state.language()
def update(self): registry = getUtility(IRegistry) items = registry['hexagonit.socialbutton.codes'] if not items: message = _(u"Please add code for social button first.") IStatusMessage(self.request).addStatusMessage(message, type='warn') return self.template
def __call__(self, context): site = getSite() ttool = getToolByName(site, 'portal_types') request = aq_get(ttool, 'REQUEST', None) items = [( translate(ttool[t].Title(), context=request), t) for t in ttool.listContentTypes() if t not in getUtility(IBadTypes)()] items.append((_(u'All Types'), u'*')) items.sort() items = [SimpleTerm(i[1], i[1], i[0]) for i in items] return SimpleVocabulary(items)
class SocialButtonConfigForm(BaseCrudForm): """Form for updating social button configuration at ControlPanel.""" label = _(u'Social Button Configuration') update_schema = ISocialButtonConfig _record_name = 'hexagonit.socialbutton.config' _class = SocialButtonConfig @property def add_schema(self): return IAddSocialButtonConfig
def __call__(self, context): site = getSite() ttool = getToolByName(site, 'portal_types') request = aq_get(ttool, 'REQUEST', None) items = [(translate(ttool[t].Title(), context=request), t) for t in ttool.listContentTypes() if t not in getUtility(IBadTypes)()] items.append((_(u'All Types'), u'*')) items.sort() items = [SimpleTerm(i[1], i[1], i[0]) for i in items] return SimpleVocabulary(items)
class SocialButtonCodeForm(BaseCrudForm): """Form for updating social button code at ControlPanel.""" label = _(u'Social Button Code Setting') update_schema = ISocialButtonCode _record_name = 'hexagonit.socialbutton.codes' _class = SocialButtonCode @property def add_schema(self): return IAddSocialButtonCode def update(self): super(self.__class__, self).update() edit_forms = self.subforms[0] forms = edit_forms.subforms cols = 70 for form in forms: code_text_widget = form.widgets['code_text'] code_text_widget.cols = cols add_form = self.subforms[1] add_form.widgets['code_text'].cols = cols
class ISocialButtonConfig(IAddSocialButtonConfig): code_id = schema.TextLine(title=_(u'ID'), readonly=True)
class ISocialButtonCode(IAddSocialButtonCode): """""" code_id = schema.TextLine(title=_(u'ID'), readonly=True)
class IAddSocialButtonCode(Schema): code_id = schema.TextLine(title=_(u'ID')) code_text = schema.Text(title=_(u'Code'))
class LangCountry(AllContent): description = _(u'Locales such as fi_FI.') def safe_call(self): lang = getAdapter(self.context, IStringSubstitution, name="lang")() return '{0}_{1}'.format(lang, LANGUAGE_COUNTRY[lang])