diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties index 14e381db28a..7b2a714ee55 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. missingEntitlement=MISSING ENTITLEMENT: CONNECTOR_READ + +menu.Topology=Topology diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties index dc297fc5ad8..796fbdb5467 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. missingEntitlement=DROIT MANQUANT : CONNECTOR_READ + +menu.Topology=Topologie diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties index 5a3d4c8d0c9..06e80ac5f09 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. missingEntitlement=ENTITLEMENT MANCANTE: CONNECTOR_READ + +menu.Topology=Topologia diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties index 932f656acd6..5406bef554f 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. missingEntitlement=\u6a29\u5229\u4ed8\u4e0e\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: CONNECTOR_READ + +menu.Topology=\u30c8\u30dd\u30ed\u30b8\u30fc diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties index 14e381db28a..fc21cf12f13 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. missingEntitlement=MISSING ENTITLEMENT: CONNECTOR_READ + +menu.Topology=Topologia diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties index 7f3248a23b8..ed2f267c408 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties @@ -14,5 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# missingEntitlement=Нет прав доступа на просмотр коннектора (CONNECTOR_READ) missingEntitlement=\u041d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430 (CONNECTOR_READ) + +menu.Topology=\u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DynamicMenuStringResourceLoader.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DynamicMenuStringResourceLoader.java new file mode 100644 index 00000000000..13234932ec6 --- /dev/null +++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DynamicMenuStringResourceLoader.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.ui.commons; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import org.apache.wicket.core.util.resource.locator.IResourceNameIterator; +import org.apache.wicket.resource.IPropertiesFactory; +import org.apache.wicket.resource.Properties; +import org.apache.wicket.resource.loader.ClassStringResourceLoader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class DynamicMenuStringResourceLoader extends ClassStringResourceLoader { + + protected static final Logger LOG = LoggerFactory.getLogger(DynamicMenuStringResourceLoader.class); + + private final Map> keysForPages; + + public DynamicMenuStringResourceLoader() { + super(DynamicMenuStringResourceLoader.class); + keysForPages = new HashMap<>(); + } + + @Override + public String loadStringResource( + final Class clazz, + final String key, + final Locale locale, + final String style, + final String variation) { + + if (key != null && key.startsWith("menu.")) { + Class pageClass = getPage(key); + + if (pageClass != null) { + final String path = pageClass.getName().replace('.', '/'); + final IResourceNameIterator iter = newResourceNameIterator(path, locale, style, variation); + final IPropertiesFactory propertiesFactory = getPropertiesFactory(); + + while (iter.hasNext()) { + final String newPath = iter.next(); + final Properties props = propertiesFactory.load(pageClass, newPath); + + if (props != null) { + final String localeLabel = props.getString(key); + LOG.debug("Found label \"{}\" for key: {}", localeLabel, key); + return localeLabel; + } + } + } + } + + return null; + } + + private Class getPage(final String key) { + return keysForPages.get(key); + } + + public void register(final String key, final Class pageClass) { + keysForPages.put(key, pageClass); + } +} diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java index 0f85093b9e6..b1a3c8fb911 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java @@ -69,6 +69,7 @@ import org.apache.syncope.client.console.rest.TaskRestClient; import org.apache.syncope.client.console.rest.UserRestClient; import org.apache.syncope.client.console.rest.UserSelfRestClient; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.client.ui.commons.MIMETypesLoader; import org.apache.syncope.client.ui.commons.PreviewUtils; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -334,4 +335,10 @@ public UserRestClient userRestClient() { public UserSelfRestClient userSelfRestClient() { return new UserSelfRestClient(); } + + @ConditionalOnMissingBean + @Bean + public DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader() { + return new DynamicMenuStringResourceLoader(); + } } diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java index 74bb1be384c..a92b9227f4c 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java @@ -33,6 +33,7 @@ import org.apache.syncope.client.console.commons.StatusProvider; import org.apache.syncope.client.console.init.ClassPathScanImplementationLookup; import org.apache.syncope.client.console.wizards.any.UserFormFinalizer; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.client.ui.commons.actuate.SyncopeCoreHealthIndicator; import org.apache.syncope.common.keymaster.client.api.ServiceOps; import org.apache.syncope.common.keymaster.client.api.model.NetworkService; @@ -87,7 +88,9 @@ public SyncopeWebApplication syncopeWebApplication( @Qualifier(SyncopeWebApplication.LOGGEDOUT_SESSIONID_CACHE) final Cache loggedoutSessionIdCache, @Qualifier(SyncopeWebApplication.DESTROYED_SESSIONID_CACHE) - final Cache destroyedSessionIdCache) { + final Cache destroyedSessionIdCache, + final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader + ) { return new SyncopeWebApplication( props, @@ -103,7 +106,8 @@ public SyncopeWebApplication syncopeWebApplication( userFormFinalizers, resources, loggedoutSessionIdCache, - destroyedSessionIdCache); + destroyedSessionIdCache, + dynamicMenuStringResourceLoader); } @ConditionalOnMissingBean diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java index 9d32acacfa2..8dae943ce0a 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java @@ -40,6 +40,7 @@ import org.apache.syncope.client.console.commons.RealmsUtils; import org.apache.syncope.client.console.commons.StatusProvider; import org.apache.syncope.client.console.init.ClassPathScanImplementationLookup; +import org.apache.syncope.client.console.pages.BaseExtPage; import org.apache.syncope.client.console.pages.BasePage; import org.apache.syncope.client.console.pages.Dashboard; import org.apache.syncope.client.console.pages.Login; @@ -52,7 +53,9 @@ import org.apache.syncope.client.ui.commons.BaseSession; import org.apache.syncope.client.ui.commons.BaseWebApplication; import org.apache.syncope.client.ui.commons.Constants; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.client.ui.commons.SyncopeUIRequestCycleListener; +import org.apache.syncope.client.ui.commons.annotations.ExtPage; import org.apache.syncope.client.ui.commons.annotations.Resource; import org.apache.syncope.client.ui.commons.themes.AdminLTE; import org.apache.syncope.client.ui.commons.wizards.AjaxWizard; @@ -125,6 +128,8 @@ public static SyncopeWebApplication get() { protected final Cache destroyedSessionIdCache; + protected final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader; + public SyncopeWebApplication( final ConsoleProperties props, final ClassPathScanImplementationLookup lookup, @@ -140,7 +145,8 @@ public SyncopeWebApplication( final List userFormFinalizers, final List resources, final Cache loggedoutSessionIdCache, - final Cache destroyedSessionIdCache) { + final Cache destroyedSessionIdCache, + final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader) { this.props = props; this.lookup = lookup; @@ -157,6 +163,7 @@ public SyncopeWebApplication( this.resources = resources; this.loggedoutSessionIdCache = loggedoutSessionIdCache; this.destroyedSessionIdCache = destroyedSessionIdCache; + this.dynamicMenuStringResourceLoader = dynamicMenuStringResourceLoader; } protected SyncopeUIRequestCycleListener buildSyncopeUIRequestCycleListener() { @@ -240,6 +247,23 @@ protected void init() { mountPage("/login", getSignInPageClass()); + final List> amPageClasses = lookup.getAMPageClasses(); + amPageClasses.forEach(claz -> { + dynamicMenuStringResourceLoader.register("menu." + claz.getSimpleName(), claz); + }); + + final List> idmPageClasses = lookup.getIdMPageClasses(); + idmPageClasses.forEach(claz -> { + dynamicMenuStringResourceLoader.register("menu." + claz.getSimpleName(), claz); + }); + + final List> extPageClasses = lookup.getClasses(BaseExtPage.class); + extPageClasses.stream().filter(claz -> (claz.isAnnotationPresent(ExtPage.class))).forEach(claz -> { + dynamicMenuStringResourceLoader.register("menu." + claz.getSimpleName(), claz); + }); + + getResourceSettings().getStringResourceLoaders().add(dynamicMenuStringResourceLoader); + for (IResource resource : resources) { Class resourceClass = AopUtils.getTargetClass(resource); Resource annotation = resourceClass.getAnnotation(Resource.class); diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java index a77b56ad17e..a2ceee3406a 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java @@ -187,7 +187,7 @@ protected void populateItem(final ListItem> item) { IdMPage ann = item.getModelObject().getAnnotation(IdMPage.class); BookmarkablePageLink link = new BookmarkablePageLink<>("idmPage", item.getModelObject()); - link.add(new Label("idmPageLabel", ann.label())); + link.add(new Label("idmPageLabel", getString("menu." + ann.label(), null, ann.label()))); if (StringUtils.isNotBlank(ann.listEntitlement())) { MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, ann.listEntitlement()); } @@ -226,7 +226,8 @@ protected void populateItem(final ListItem> item) { AMPage ann = item.getModelObject().getAnnotation(AMPage.class); BookmarkablePageLink link = new BookmarkablePageLink<>("amPage", item.getModelObject()); - link.add(new Label("amPageLabel", ann.label())); + link.add(new Label("amPageLabel", getString("menu." + ann.label(), null, ann.label()))); + if (StringUtils.isNotBlank(ann.listEntitlement())) { MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, ann.listEntitlement()); } @@ -521,7 +522,7 @@ protected void populateItem(final ListItem> item) { ExtPage ann = item.getModelObject().getAnnotation(ExtPage.class); BookmarkablePageLink link = new BookmarkablePageLink<>("extPage", item.getModelObject()); - link.add(new Label("extPageLabel", ann.label())); + link.add(new Label("extPageLabel", getString("menu." + ann.label(), null, ann.label()))); if (StringUtils.isNotBlank(ann.listEntitlement())) { MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.RENDER, ann.listEntitlement()); } diff --git a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties index c5574aed488..2c2735d1550 100644 --- a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties +++ b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties @@ -79,6 +79,6 @@ nomatch=No matches found tooLargeFile=File is too large, max upload file size is ${maxUploadSizeB} bytes (${maxUploadSizeMB} MB). confirmDelegation=Do you really want to switch user? topology=Topology -engagements=Engagements +engagements=\u5a5a\u7d04 confirmProvisionMembers=Do you really want to provision all group members? confirmDeprovisionMembers=Do you really want to deprovision all group members? diff --git a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties index 99cb0b03198..deed0a67709 100644 --- a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties +++ b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties @@ -81,6 +81,6 @@ nomatch=Nenhuma correspond\u00eancia encontrada tooLargeFile=File is too large, max upload file size is ${maxUploadSizeB} bytes (${maxUploadSizeMB} MB). confirmDelegation=Do you really want to switch user? topology=Topology -engagements=Engagements +engagements=Compromissos confirmProvisionMembers=Do you really want to provision all group's members? confirmDeprovisionMembers=Do you really want to deprovision all group members? diff --git a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties index 8a234c38d6e..ee0d2cedee3 100644 --- a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties +++ b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties @@ -80,6 +80,6 @@ nomatch=No matches found tooLargeFile=File is too large, max upload file size is ${maxUploadSizeB} bytes (${maxUploadSizeMB} MB). confirmDelegation=Do you really want to switch user? topology=Topology -engagements=Engagements +engagements=\u043f\u043e\u043c\u043e\u043b\u0432\u043a\u0438 confirmProvisionMembers=Do you really want to provision all group members? confirmDeprovisionMembers=Do you really want to deprovision all group members? diff --git a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties index d71081c1617..b2fd7fdade2 100644 --- a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties +++ b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties @@ -16,7 +16,7 @@ # under the License. home=Home version=Version -domain=Domain +domain=Domain systemInfo=System Information hostname=Host Name diff --git a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java index 217c3268a97..17f968ad081 100644 --- a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java +++ b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java @@ -52,6 +52,7 @@ import org.apache.syncope.client.lib.SyncopeAnonymousClient; import org.apache.syncope.client.lib.SyncopeClient; import org.apache.syncope.client.lib.SyncopeClientFactoryBean; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.common.keymaster.client.api.DomainOps; import org.apache.syncope.common.keymaster.client.api.ServiceOps; import org.apache.syncope.common.keymaster.client.api.model.JPADomain; @@ -145,6 +146,11 @@ public CacheManager cacheManager() { when(cacheManager.createCache(anyString(), any())).thenAnswer(ic -> mock(Cache.class)); return cacheManager; } + + @Bean + public DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader() { + return new DynamicMenuStringResourceLoader(); + } } public static class TestSyncopeWebApplication extends SyncopeWebApplication { @@ -164,12 +170,13 @@ public TestSyncopeWebApplication( final List userFormFinalizers, final List resources, final Cache loggedoutSessionIdCache, - final Cache destroyedSessionIdCache) { + final Cache destroyedSessionIdCache, + final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader) { super(props, lookup, serviceOps, resourceProvider, anyDirectoryPanelAdditionalActionsProvider, anyDirectoryPanelAdditionalActionLinksProvider, anyWizardBuilderAdditionalSteps, statusProvider, implementationInfoProvider, accessPolicyConfProvider, policyTabProviders, userFormFinalizers, - resources, loggedoutSessionIdCache, destroyedSessionIdCache); + resources, loggedoutSessionIdCache, destroyedSessionIdCache, dynamicMenuStringResourceLoader); } public interface SyncopeServiceClient extends SyncopeService, Client { diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java index 4cbe7b47bea..6db50844ab9 100644 --- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java +++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java @@ -25,6 +25,7 @@ import org.apache.syncope.client.enduser.rest.SecurityQuestionRestClient; import org.apache.syncope.client.enduser.rest.SyncopeRestClient; import org.apache.syncope.client.enduser.rest.UserSelfRestClient; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.client.ui.commons.MIMETypesLoader; import org.apache.syncope.client.ui.commons.PreviewUtils; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -91,4 +92,10 @@ public SyncopeRestClient syncopeRestClient() { public UserSelfRestClient userSelfRestClient() { return new UserSelfRestClient(); } + + @ConditionalOnMissingBean + @Bean + public DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader() { + return new DynamicMenuStringResourceLoader(); + } } diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java index 96c0f065f70..21ef0d75c17 100644 --- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java +++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import org.apache.syncope.client.enduser.init.ClassPathScanImplementationLookup; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.client.ui.commons.actuate.SyncopeCoreHealthIndicator; import org.apache.syncope.common.keymaster.client.api.ServiceOps; import org.apache.syncope.common.keymaster.client.api.model.NetworkService; @@ -62,9 +63,11 @@ public SyncopeWebApplication syncopeWebApplication( final EnduserProperties props, final ClassPathScanImplementationLookup lookup, final ServiceOps serviceOps, - final List resources) { + final List resources, + final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader) { - return new SyncopeWebApplication(resourceLoader, props, lookup, serviceOps, resources); + return new SyncopeWebApplication( + resourceLoader, props, lookup, serviceOps, resources, dynamicMenuStringResourceLoader); } @ConditionalOnMissingBean diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java index e21b847534f..97dcf13ccb0 100644 --- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java +++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java @@ -41,7 +41,9 @@ import org.apache.syncope.client.lib.SyncopeClientFactoryBean; import org.apache.syncope.client.ui.commons.BaseLogin; import org.apache.syncope.client.ui.commons.BaseWebApplication; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.client.ui.commons.SyncopeUIRequestCycleListener; +import org.apache.syncope.client.ui.commons.annotations.ExtPage; import org.apache.syncope.client.ui.commons.annotations.Resource; import org.apache.syncope.client.ui.commons.themes.AdminLTE; import org.apache.syncope.common.keymaster.client.api.ServiceOps; @@ -91,18 +93,23 @@ public static SyncopeWebApplication get() { protected UserFormLayoutInfo customFormLayout; + protected final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader; + public SyncopeWebApplication( final ResourceLoader resourceLoader, final EnduserProperties props, final ClassPathScanImplementationLookup lookup, final ServiceOps serviceOps, - final List resources) { + final List resources, + final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader + ) { this.resourceLoader = resourceLoader; this.props = props; this.lookup = lookup; this.serviceOps = serviceOps; this.resources = resources; + this.dynamicMenuStringResourceLoader = dynamicMenuStringResourceLoader; } protected SyncopeUIRequestCycleListener buildSyncopeUIRequestCycleListener() { @@ -203,6 +210,23 @@ public IResource getResource() { } } + final List> amPageClasses = lookup.getAMPageClasses(); + amPageClasses.forEach(claz -> { + dynamicMenuStringResourceLoader.register("menu." + claz.getSimpleName(), claz); + }); + + final List> idmPageClasses = lookup.getIdMPageClasses(); + idmPageClasses.forEach(claz -> { + dynamicMenuStringResourceLoader.register("menu." + claz.getSimpleName(), claz); + }); + + final List> extPageClasses = lookup.getExtPageClasses(); + extPageClasses.stream().filter(claz -> (claz.isAnnotationPresent(ExtPage.class))).forEach(claz -> { + dynamicMenuStringResourceLoader.register("menu." + claz.getSimpleName(), claz); + }); + + getResourceSettings().getStringResourceLoaders().add(dynamicMenuStringResourceLoader); + try (InputStream is = resourceLoader.getResource(props.getCustomFormLayout()).getInputStream()) { customFormLayout = MAPPER.readValue(is, new TypeReference<>() { }); diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java index 647ae087d9e..48fd029c5a7 100644 --- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java +++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java @@ -141,8 +141,7 @@ protected void populateItem(final ListItem> item) { IdMPage ann = item.getModelObject().getAnnotation(IdMPage.class); BookmarkablePageLink link = new BookmarkablePageLink<>("idmPage", item.getModelObject()); - - link.add(new Label("idmPageLabel", ann.label())); + link.add(new Label("idmPageLabel", getString("menu." + ann.label(), null, ann.label()))); if (item.getModelObject().equals(pageRef.getPage().getClass())) { link.add(new Behavior() { @@ -177,8 +176,7 @@ protected void populateItem(final ListItem> item) { AMPage ann = item.getModelObject().getAnnotation(AMPage.class); BookmarkablePageLink link = new BookmarkablePageLink<>("amPage", item.getModelObject()); - - link.add(new Label("amPageLabel", ann.label())); + link.add(new Label("amPageLabel", getString("menu." + ann.label(), null, ann.label()))); if (item.getModelObject().equals(pageRef.getPage().getClass())) { link.add(new Behavior() { @@ -216,8 +214,7 @@ protected void populateItem(final ListItem> item) { ExtPage ann = item.getModelObject().getAnnotation(ExtPage.class); BookmarkablePageLink link = new BookmarkablePageLink<>("extPage", item.getModelObject()); - - link.add(new Label("extPageLabel", ann.label())); + link.add(new Label("extPageLabel", getString("menu." + ann.label(), null, ann.label()))); if (item.getModelObject().equals(pageRef.getPage().getClass())) { link.add(new Behavior() { diff --git a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java index 3016d1af587..64ac9d197f0 100644 --- a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java +++ b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java @@ -40,6 +40,7 @@ import org.apache.syncope.client.lib.SyncopeAnonymousClient; import org.apache.syncope.client.lib.SyncopeClient; import org.apache.syncope.client.lib.SyncopeClientFactoryBean; +import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader; import org.apache.syncope.common.keymaster.client.api.DomainOps; import org.apache.syncope.common.keymaster.client.api.ServiceOps; import org.apache.syncope.common.keymaster.client.api.model.JPADomain; @@ -126,6 +127,11 @@ public ClassPathScanImplementationLookup classPathScanImplementationLookup() { lookup.load(); return lookup; } + + @Bean + public DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader() { + return new DynamicMenuStringResourceLoader(); + } } public static class TestSyncopeWebApplication extends SyncopeWebApplication { @@ -135,9 +141,10 @@ public TestSyncopeWebApplication( final EnduserProperties props, final ClassPathScanImplementationLookup lookup, final ServiceOps serviceOps, - final List resources) { + final List resources, + final DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader) { - super(resourceLoader, props, lookup, serviceOps, resources); + super(resourceLoader, props, lookup, serviceOps, resources, dynamicMenuStringResourceLoader); } public interface SyncopeServiceClient extends SyncopeService, Client { diff --git a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties index 5b088d6d6c3..208b8c3ae0d 100644 --- a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties +++ b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties @@ -17,3 +17,5 @@ xmlEditorTitle=Workflow XML Editor userWorkflow=User workflow external_editor.title=Flowable Modeler + +menu.Flowable=Flowable diff --git a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_fr_CA.properties b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_fr_CA.properties new file mode 100644 index 00000000000..f970823aef4 --- /dev/null +++ b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_fr_CA.properties @@ -0,0 +1,21 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +xmlEditorTitle=XML \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f +userWorkflow=User workflow +external_editor.title=Flowable Modeler + +menu.Flowable=Flowable diff --git a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties index 37fd8593b36..a76f4dbd3f2 100644 --- a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties +++ b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties @@ -17,3 +17,5 @@ xmlEditorTitle=Workflow XML Editor userWorkflow=Workflow utenti external_editor.title=Flowable Modeler + +menu.Flowable=Flowable diff --git a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties index 45b48142e2c..8328db68576 100644 --- a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties +++ b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties @@ -17,3 +17,5 @@ xmlEditorTitle=\u30ef\u30fc\u30af\u30d5\u30ed\u30fc XML \u30a8\u30c7\u30a3\u30bf\u30fc userWorkflow=\u30e6\u30fc\u30b6\u30fc\u30ef\u30fc\u30af\u30d5\u30ed\u30fc external_editor.title=Flowable \u30e2\u30c7\u30e9\u30fc + +menu.Flowable=Flowable diff --git a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties index 5b088d6d6c3..208b8c3ae0d 100644 --- a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties +++ b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties @@ -17,3 +17,5 @@ xmlEditorTitle=Workflow XML Editor userWorkflow=User workflow external_editor.title=Flowable Modeler + +menu.Flowable=Flowable diff --git a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties index 515fa3ae725..f970823aef4 100644 --- a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties +++ b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties @@ -17,3 +17,5 @@ xmlEditorTitle=XML \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f userWorkflow=User workflow external_editor.title=Flowable Modeler + +menu.Flowable=Flowable diff --git a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java index 30d9cd28279..f4d6345807b 100644 --- a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java +++ b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java @@ -48,7 +48,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; -@ExtPage(label = "User Requests", icon = "fa fa-briefcase", listEntitlement = "") +@ExtPage(label = "Flowable", icon = "fa fa-briefcase", listEntitlement = "") public class Flowable extends BaseExtPage { private static final long serialVersionUID = -8781434495150074529L; diff --git a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties index 17cc65dccff..0462c18517d 100644 --- a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties +++ b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties @@ -23,3 +23,5 @@ delete=Delete start=Start requests.to.be.approved=Your active requests activityId=Activity Id + +menu.Flowable=User Requests diff --git a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_fr_CA.properties b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_fr_CA.properties new file mode 100644 index 00000000000..3fb74cc04c8 --- /dev/null +++ b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_fr_CA.properties @@ -0,0 +1,27 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +user.requests.accordion=${bpmnProcess} (${activityId}) +bpmn.process.title=Richieste +submit=Salva +executionId=Id esecuzione +startTime=Eseguito il +delete=Cancella +start=Esegui +requests.to.be.approved=Richieste in lavorazione +activityId=Id attivit\u00e0 + +menu.Flowable=Demandes des utilisateurs diff --git a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties index aba7051a6d2..f52e354375f 100644 --- a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties +++ b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties @@ -23,3 +23,5 @@ delete=Cancella start=Esegui requests.to.be.approved=Richieste in lavorazione activityId=Id attivit\u00e0 + +menu.Flowable=Richieste utente diff --git a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties index 2a8e4033b7b..235838f236c 100644 --- a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties +++ b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties @@ -23,3 +23,5 @@ delete=\u30af\u30ea\u30a2 start=\u958b\u59cb requests.to.be.approved=\u3042\u306a\u305f\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30ea\u30af\u30a8\u30b9\u30c8 activityId=Activity Id + +menu.Flowable=\u30e6\u30fc\u30b6\u30fc\u8981\u8acb diff --git a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties index 57b7d626835..29c98da4597 100644 --- a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties +++ b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties @@ -23,3 +23,6 @@ delete=Limpa start=Come\u00e7ar requests.to.be.approved=Seus pedidos ativos activityId=Activity Id + +menu.Flowable=Solicita\u00e7\u00f5es dos usu\u00e1rios + diff --git a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties index 87cfaccc4ac..1471ccd5334 100644 --- a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties +++ b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties @@ -23,3 +23,5 @@ delete=\u0440\u0430\u0441\u0441\u0435\u0435\u0442\u0441\u044f start=\u041d\u0430\u0447\u043d\u0438\u0442\u0435 requests.to.be.approved=\u0412\u0430\u0448\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b activityId=Activity Id + +menu.Flowable=\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 diff --git a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java index afa8fbec4ac..a1924650ffa 100644 --- a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java +++ b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java @@ -34,7 +34,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; -@ExtPage(label = "OIDC 1.0 C4UI", icon = "fab fa-openid", +@ExtPage(label = "OIDCC4UI", icon = "fab fa-openid", listEntitlement = OIDCC4UIEntitlement.OP_READ, priority = 300) public class OIDCC4UI extends BaseExtPage { diff --git a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties index b34f11c3667..5712591ae59 100644 --- a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties +++ b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. op=OIDC Providers + +menu.OIDCC4UI=OIDC 1.0 C4UI diff --git a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_fr.properties b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_fr.properties new file mode 100644 index 00000000000..51e437f0f76 --- /dev/null +++ b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_fr.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +op=Provider OIDC + +menu.OIDCC4UI=OIDC 1.0 C4UI diff --git a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties index e78fe314b36..51e437f0f76 100644 --- a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties +++ b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. op=Provider OIDC + +menu.OIDCC4UI=OIDC 1.0 C4UI diff --git a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ja.properties b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ja.properties new file mode 100644 index 00000000000..5712591ae59 --- /dev/null +++ b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ja.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +op=OIDC Providers + +menu.OIDCC4UI=OIDC 1.0 C4UI diff --git a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_pt.properties b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_pt.properties new file mode 100644 index 00000000000..51e437f0f76 --- /dev/null +++ b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_pt.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +op=Provider OIDC + +menu.OIDCC4UI=OIDC 1.0 C4UI diff --git a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties index b34f11c3667..5712591ae59 100644 --- a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties +++ b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. op=OIDC Providers + +menu.OIDCC4UI=OIDC 1.0 C4UI diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java index 9bffc913798..28431bf9ea9 100644 --- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java +++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java @@ -36,7 +36,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; -@ExtPage(label = "SAML 2.0 SP4UI", icon = "fas fa-sign-in-alt", +@ExtPage(label = "SAML2SP4UI", icon = "fas fa-sign-in-alt", listEntitlement = SAML2SP4UIEntitlement.IDP_READ, priority = 400) public class SAML2SP4UI extends BaseExtPage { diff --git a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties index ead24e7b81c..734c6a71db9 100644 --- a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties +++ b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties @@ -16,3 +16,5 @@ # under the License. idps=Identity Providers sp=Service Provider + +menu.SAML2SP4UI=SAML 2.0 SP4UI diff --git a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_fr_CA.properties b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_fr_CA.properties new file mode 100644 index 00000000000..734c6a71db9 --- /dev/null +++ b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_fr_CA.properties @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +idps=Identity Providers +sp=Service Provider + +menu.SAML2SP4UI=SAML 2.0 SP4UI diff --git a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties index ead24e7b81c..734c6a71db9 100644 --- a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties +++ b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties @@ -16,3 +16,5 @@ # under the License. idps=Identity Providers sp=Service Provider + +menu.SAML2SP4UI=SAML 2.0 SP4UI diff --git a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ja.properties b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ja.properties new file mode 100644 index 00000000000..734c6a71db9 --- /dev/null +++ b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ja.properties @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +idps=Identity Providers +sp=Service Provider + +menu.SAML2SP4UI=SAML 2.0 SP4UI diff --git a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties index ead24e7b81c..734c6a71db9 100644 --- a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties +++ b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties @@ -16,3 +16,5 @@ # under the License. idps=Identity Providers sp=Service Provider + +menu.SAML2SP4UI=SAML 2.0 SP4UI diff --git a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties index ead24e7b81c..734c6a71db9 100644 --- a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties +++ b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties @@ -16,3 +16,5 @@ # under the License. idps=Identity Providers sp=Service Provider + +menu.SAML2SP4UI=SAML 2.0 SP4UI diff --git a/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java b/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java index 798d95161b4..73c08db918b 100644 --- a/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java +++ b/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java @@ -28,7 +28,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; -@ExtPage(label = "SCIM 2.0", icon = "fa fa-cloud", listEntitlement = SCIMEntitlement.SCIM_CONF_GET, priority = 500) +@ExtPage(label = "SCIMConfPage", icon = "fa fa-cloud", listEntitlement = SCIMEntitlement.SCIM_CONF_GET, priority = 500) public class SCIMConfPage extends BaseExtPage { private static final long serialVersionUID = -8156063343062111770L; diff --git a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties index cbcf4a3254d..a82bf5e4df2 100644 --- a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties +++ b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. scimConfGeneral=General + +menu.SCIMConfPage=SCIM 2.0 diff --git a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_fr.properties b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_fr.properties new file mode 100644 index 00000000000..a82bf5e4df2 --- /dev/null +++ b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_fr.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +scimConfGeneral=General + +menu.SCIMConfPage=SCIM 2.0 diff --git a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties index cbcf4a3254d..a82bf5e4df2 100644 --- a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties +++ b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. scimConfGeneral=General + +menu.SCIMConfPage=SCIM 2.0 diff --git a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ja.properties b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ja.properties new file mode 100644 index 00000000000..a82bf5e4df2 --- /dev/null +++ b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ja.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +scimConfGeneral=General + +menu.SCIMConfPage=SCIM 2.0 diff --git a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties index cbcf4a3254d..a82bf5e4df2 100644 --- a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties +++ b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties @@ -15,3 +15,5 @@ # specific language governing permissions and limitations # under the License. scimConfGeneral=General + +menu.SCIMConfPage=SCIM 2.0 diff --git a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties index cbcf4a3254d..66cff144741 100644 --- a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties +++ b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties @@ -15,3 +15,6 @@ # specific language governing permissions and limitations # under the License. scimConfGeneral=General + +menu.SCIMConfPage=SCIM 2.0 +