Skip to content

Commit 1c5737c

Browse files
committed
feat: Application of CSS/JS to meta site - MEED-8163 - Meeds-io/MIPs#167 (#16)
Fix feedbacks
1 parent d83c425 commit 1c5737c

File tree

2 files changed

+76
-30
lines changed

2 files changed

+76
-30
lines changed

ide-service/src/main/java/io/meeds/ide/service/StaticResourceService.java

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
import io.meeds.ide.model.Widget;
2222
import io.meeds.ide.storage.WidgetStorage;
2323
import io.meeds.layout.service.LayoutAclService;
24+
import io.meeds.social.navigation.constant.SidebarItemType;
25+
import io.meeds.social.navigation.model.NavigationConfiguration;
26+
import io.meeds.social.navigation.service.NavigationConfigurationService;
27+
import org.exoplatform.commons.utils.CommonsUtils;
2428
import org.exoplatform.portal.config.UserPortalConfigService;
2529
import org.exoplatform.portal.config.model.Application;
2630
import org.exoplatform.portal.config.model.TransientApplicationState;
@@ -32,41 +36,42 @@
3236
import org.springframework.stereotype.Service;
3337

3438
import java.time.LocalDateTime;
35-
import java.util.ArrayList;
36-
import java.util.LinkedHashMap;
37-
import java.util.List;
38-
import java.util.Map;
39+
import java.util.*;
3940

4041
import static io.meeds.ide.service.WidgetService.IDE_WIDGET_CREATED_EVENT;
4142
import static io.meeds.ide.service.WidgetService.NOT_ADMINISTRATOR_USER;
4243

4344
@Service
4445
public class StaticResourceService {
4546

46-
public static final String SITE_NAME = "siteName";
47+
public static final String SITE_NAME = "siteName";
4748

48-
public static final String POSITION = "position";
49+
public static final String POSITION = "position";
4950

50-
public static final String ENABLED = "enabled";
51+
public static final String ENABLED = "enabled";
5152

52-
public static final String CONTENT_ID = "ide/WidgetPortlet";
53+
public static final String CONTENT_ID = "ide/WidgetPortlet";
5354

54-
public static final String WIDGET_ID = "widgetId";
55+
public static final String WIDGET_ID = "widgetId";
56+
57+
private static final String SPACE_SITE_TYPE_PREFIX = "/spaces/";
5558

5659
@Autowired
57-
private LayoutAclService layoutAclService;
60+
private LayoutAclService layoutAclService;
5861

5962
@Autowired
60-
private IdentityManager identityManager;
63+
private IdentityManager identityManager;
6164

6265
@Autowired
63-
private ListenerService listenerService;
66+
private ListenerService listenerService;
6467

6568
@Autowired
66-
private WidgetStorage widgetStorage;
69+
private WidgetStorage widgetStorage;
6770

6871
@Autowired
69-
private UserPortalConfigService userPortalConfigService;
72+
private UserPortalConfigService userPortalConfigService;
73+
74+
private NavigationConfigurationService navigationConfigurationService;
7075

7176
public List<Widget> getStaticResources(String siteName, String username) throws IllegalAccessException {
7277
if (!layoutAclService.isAdministrator(username)) {
@@ -78,9 +83,10 @@ public List<Widget> getStaticResources(String siteName, String username) throws
7883
}
7984

8085
public List<Application> getStaticResourceApplications(String siteName, String applicationPosition) {
81-
List<Application> applications = new ArrayList<>();
82-
applications.addAll(getApplicationsBySite(siteName, applicationPosition));
83-
applications.addAll(getMetaSiteStaticResourceApplications(applicationPosition));
86+
List<Application> applications = new ArrayList<>(getApplicationsBySite(siteName, applicationPosition));
87+
if (isMetaSiteNavigation(siteName) || siteName.startsWith(SPACE_SITE_TYPE_PREFIX)) {
88+
applications.addAll(getMetaSiteStaticResourceApplications(applicationPosition));
89+
}
8490
return applications;
8591
}
8692

@@ -119,6 +125,19 @@ private List<Widget> getWidgetsBySite(String siteName, String applicationPositio
119125
return widgets;
120126
}
121127

128+
private boolean isMetaSiteNavigation(String siteName) {
129+
NavigationConfiguration navigationConfiguration = getNavigationConfigurationService().getConfiguration();
130+
if (navigationConfiguration == null) {
131+
return false;
132+
}
133+
return navigationConfiguration.getSidebar()
134+
.getItems()
135+
.stream()
136+
.anyMatch(sidebarItem -> sidebarItem.getProperties() != null
137+
&& Objects.equals(sidebarItem.getProperties().get(SITE_NAME), siteName)
138+
&& SidebarItemType.SITE.equals(sidebarItem.getType()));
139+
}
140+
122141
private Map<String, String> createFilters(String siteName, String applicationPosition) {
123142
Map<String, String> filters = new LinkedHashMap<>();
124143
filters.put(SITE_NAME, siteName);
@@ -134,4 +153,11 @@ private Application toApplication(Widget widget) {
134153
app.setStorageId(String.valueOf(widget.getId()));
135154
return app;
136155
}
156+
157+
private NavigationConfigurationService getNavigationConfigurationService() {
158+
if (navigationConfigurationService == null) {
159+
navigationConfigurationService = CommonsUtils.getService(NavigationConfigurationService.class);
160+
}
161+
return navigationConfigurationService;
162+
}
137163
}

ide-service/src/test/java/io/meeds/ide/service/StaticResourceServiceTest.java

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,19 @@
2525
import static org.mockito.ArgumentMatchers.notNull;
2626
import static org.mockito.Mockito.*;
2727

28+
import io.meeds.social.navigation.constant.SidebarItemType;
29+
import io.meeds.social.navigation.model.NavigationConfiguration;
30+
import io.meeds.social.navigation.model.SidebarConfiguration;
31+
import io.meeds.social.navigation.model.SidebarItem;
32+
import io.meeds.social.navigation.service.NavigationConfigurationService;
33+
import org.exoplatform.commons.utils.CommonsUtils;
2834
import org.exoplatform.portal.config.UserPortalConfigService;
2935
import org.exoplatform.portal.config.model.Application;
3036
import org.exoplatform.portal.config.model.TransientApplicationState;
3137
import org.junit.jupiter.api.Test;
3238
import org.junit.jupiter.api.extension.ExtendWith;
3339
import org.mockito.Mock;
40+
import org.mockito.MockedStatic;
3441
import org.mockito.junit.jupiter.MockitoExtension;
3542
import org.springframework.beans.factory.annotation.Autowired;
3643
import org.springframework.boot.test.context.SpringBootTest;
@@ -44,41 +51,41 @@
4451
import io.meeds.ide.storage.WidgetStorage;
4552
import io.meeds.layout.service.LayoutAclService;
4653

47-
import java.util.LinkedHashMap;
48-
import java.util.List;
49-
import java.util.Map;
54+
import java.util.*;
5055

5156
@SpringBootTest(classes = { StaticResourceService.class, })
5257
@ExtendWith(MockitoExtension.class)
5358
class StaticResourceServiceTest {
5459

55-
private static final String USERNAME = "testUser";
60+
private static final MockedStatic<CommonsUtils> COMMONS_UTILS_UTIL = mockStatic(CommonsUtils.class);
5661

57-
private static final String SITE_NAME = "siteName";
62+
private static final String USERNAME = "testUser";
63+
64+
private static final String SITE_NAME = "siteName";
5865

5966
@MockBean
60-
private LayoutAclService layoutAclService;
67+
private LayoutAclService layoutAclService;
6168

6269
@MockBean
63-
private IdentityManager identityManager;
70+
private IdentityManager identityManager;
6471

6572
@MockBean
66-
private ListenerService listenerService;
73+
private ListenerService listenerService;
6774

6875
@MockBean
69-
private WidgetStorage widgetStorage;
76+
private WidgetStorage widgetStorage;
7077

7178
@MockBean
72-
private UserPortalConfigService userPortalConfigService;
79+
private UserPortalConfigService userPortalConfigService;
7380

7481
@Autowired
75-
private StaticResourceService staticResourceService;
82+
private StaticResourceService staticResourceService;
7683

7784
@Mock
78-
private Widget widget;
85+
private Widget widget;
7986

8087
@Mock
81-
private Identity identity;
88+
private Identity identity;
8289

8390
@Test
8491
void getStaticResources() throws IllegalAccessException {
@@ -117,6 +124,19 @@ void getStaticResourceApplications() {
117124
filters.put(POSITION, "END_OF_BODY");
118125
filters.put(ENABLED, "true");
119126

127+
NavigationConfigurationService navigationConfigurationService = mock(NavigationConfigurationService.class);
128+
NavigationConfiguration navigationConfiguration = mock(NavigationConfiguration.class);
129+
SidebarConfiguration sidebarConfiguration = mock(SidebarConfiguration.class);
130+
List<SidebarItem> sidebarItems = new ArrayList<>();
131+
SidebarItem sidebarItem1 = new SidebarItem();
132+
sidebarItem1.setType(SidebarItemType.SITE);
133+
sidebarItem1.setProperties(new HashMap<>() { { put(SITE_NAME, "siteName"); } });
134+
sidebarItems.add(sidebarItem1);
135+
when(navigationConfigurationService.getConfiguration()).thenReturn(navigationConfiguration);
136+
when(navigationConfiguration.getSidebar()).thenReturn(sidebarConfiguration);
137+
when(sidebarConfiguration.getItems()).thenReturn(sidebarItems);
138+
139+
COMMONS_UTILS_UTIL.when(() -> CommonsUtils.getService(NavigationConfigurationService.class)).thenReturn(navigationConfigurationService);
120140
when(widgetStorage.getWidgetsByProperties(filters)).thenReturn(List.of(widget));
121141

122142
List<Application> apps = staticResourceService.getStaticResourceApplications("siteName", "END_OF_BODY");

0 commit comments

Comments
 (0)