Exemplo n.º 1
0
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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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))