2121import io .meeds .ide .model .Widget ;
2222import io .meeds .ide .storage .WidgetStorage ;
2323import 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 ;
2428import org .exoplatform .portal .config .UserPortalConfigService ;
2529import org .exoplatform .portal .config .model .Application ;
2630import org .exoplatform .portal .config .model .TransientApplicationState ;
3236import org .springframework .stereotype .Service ;
3337
3438import 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
4041import static io .meeds .ide .service .WidgetService .IDE_WIDGET_CREATED_EVENT ;
4142import static io .meeds .ide .service .WidgetService .NOT_ADMINISTRATOR_USER ;
4243
4344@ Service
4445public 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}
0 commit comments