class IIamTaxonomyTermSchema(Interface): lang = schema.Choice( title=_(u"Language"), vocabulary="plone.app.vocabularies.SupportedContentLanguages", required=True, ) term = schema.Choice(title=_(u"I am Term"), vocabulary="collective.taxonomy.iam", required=True) text = schema.Text(title=_(u"Description"), required=True)
def taxonomies_links(self, taxonomy_name, taxonomy_title): targets_by_level = self.generate_menu_value_by_taxonomy_level( taxonomy_name) if not targets_by_level: return None normalizer = getUtility(IIDNormalizer) sorted_targets_by_level = sorted(targets_by_level.items(), key=operator.itemgetter(1)) sorted_targets_by_level = [(i[0], i[1], normalizer.normalize(i[1])) for i in sorted_targets_by_level] current_lang = api.portal.get_current_language()[:2] translate_title = translate(_(taxonomy_title), target_language=current_lang) folder = normalizer.normalize(translate_title) result = OrderedDict() language_tool = api.portal.get_tool("portal_languages") langs = language_tool.supported_langs for target in sorted_targets_by_level: if len(langs) > 1: url = "{0}/{1}/{2}/{3}#c0={4}".format( api.portal.get().absolute_url(), self.get_language(), folder, target[2], target[0], ) else: url = "{0}/{1}/{2}#c0={3}".format( api.portal.get().absolute_url(), folder, target[2], target[0]) result[target[1]] = url return result
class IIamIsearchSettings(Interface): """""" iam_taxonomy_description = schema.List( title=_(u"Descriptions to show above I am faceted search"), required=False, value_type=DictRow(title=_(u"Value"), schema=IIamTaxonomyTermSchema), ) widget(iam_taxonomy_description=DataGridFieldFactory) isearch_taxonomy_description = schema.List( title=_(u"Descriptions to show above I search faceted search"), required=False, value_type=DictRow(title=_(u"Value"), schema=ISearchTaxonomyTermSchema), ) widget(isearch_taxonomy_description=DataGridFieldFactory)
class IamIsearchSettingsEditForm(RegistryEditForm): form.extends(RegistryEditForm) schema = IIamIsearchSettings label = _(u"I am / I search settings") def updateFields(self): super(IamIsearchSettingsEditForm, self).updateFields() def updateWidgets(self): super(IamIsearchSettingsEditForm, self).updateWidgets()
def translation_folderish(obj, lang, title): translated_obj = api_lng.translate(obj, lang) translate_title = translate(_(title), target_language=lang) normalizer = getUtility(IIDNormalizer) new_id = normalizer.normalize(translate_title) translated_obj.title = translate_title if translated_obj.id != new_id: api.content.rename(translated_obj, new_id=new_id) try: nav = IExcludeFromNavigation(translated_obj) except: pass if nav: nav.exclude_from_nav = True translated_obj.reindexObject() return translated_obj
def post_install(context): """Post install script""" # creation of taxonomies language_tool = api.portal.get_tool("portal_languages") langs = language_tool.supported_langs current_lang = api.portal.get_default_language()[:2] taxonomies_collection = ["I am", "I search"] data_iam = { "taxonomy": "iam", "field_title": translate(_("I am"), target_language=current_lang), "field_description": "", "default_language": "fr", } data_isearch = { "taxonomy": "isearch", "field_title": translate(_("I search"), target_language=current_lang), "field_description": "", "default_language": "fr", } faced_config = { "I am": "/faceted/config/iam_folder_{0}.xml", "I search": "/faceted/config/isearch_folder_{0}.xml", } provided_interfaces = {"I am": IIAmFolder, "I search": IISearchFolder} # install taxonomy portal = api.portal.get() sm = portal.getSiteManager() iam_item = "collective.taxonomy.iam" isearch_item = "collective.taxonomy.isearch" utility_iam = sm.queryUtility(ITaxonomy, name=iam_item) utility_isearch = sm.queryUtility(ITaxonomy, name=isearch_item) # stop installation if already if utility_iam and utility_isearch: enable_taxonomies_content_type() return create_taxonomy_object(data_iam) create_taxonomy_object(data_isearch) # remove taxonomy test item = "collective.taxonomy.test" utility = sm.queryUtility(ITaxonomy, name=item) if utility: utility.unregisterBehavior() sm.unregisterUtility(utility, ITaxonomy, name=item) sm.unregisterUtility(utility, IVocabularyFactory, name=item) sm.unregisterUtility(utility, ITranslationDomain, name=item) enable_taxonomies_content_type() # creation of two collections by language container = api.portal.get().get(current_lang) if container is None: container = api.portal.get() for taxonomy_collection in taxonomies_collection: title = taxonomy_collection translate_title = translate(_(title), target_language=current_lang) normalizer = getUtility(IIDNormalizer) new_id = normalizer.normalize(translate_title) if normalizer.normalize(title) not in container: new_obj = api.content.create(type="Folder", title=translate_title, container=container) alsoProvides(new_obj, provided_interfaces[taxonomy_collection]) if new_obj.id != new_id: api.content.rename(new_obj, new_id=new_id) try: nav = IExcludeFromNavigation(new_obj) except: pass if nav: nav.exclude_from_nav = True new_obj.reindexObject() _activate_dashboard_navigation( new_obj, faced_config[taxonomy_collection].format(current_lang)) for lang in langs: if lang != current_lang: translated_obj = translation_folderish( new_obj, lang, title) alsoProvides(translated_obj, provided_interfaces[taxonomy_collection]) _activate_dashboard_navigation( translated_obj, faced_config[taxonomy_collection].format(lang))