From 22d010c096ebf8ee9f4632634b30671d462fce91 Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Tue, 8 Nov 2022 15:24:35 +0200 Subject: [PATCH 1/4] [Admin Tools | log4j2]: AdminToolsCheckDeployController.java: In /health_check/advanced method added admintool.cache.url. --- .../controllers/AdminToolsCheckDeployController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java index dd2706c..6a0efba 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/AdminToolsCheckDeployController.java @@ -5,6 +5,7 @@ import com.mongodb.CommandResult; import com.mongodb.DBObject; import eu.dnetlib.uoaadmintools.configuration.GlobalVars; import eu.dnetlib.uoaadmintools.configuration.mongo.MongoConnection; +import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig; import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig; import eu.dnetlib.uoaadmintools.configuration.properties.MongoConfig; import org.apache.logging.log4j.LogManager; @@ -35,6 +36,9 @@ public class AdminToolsCheckDeployController { @Autowired private ManagersApiConfig managersApiConfig; + @Autowired + private BrowserCacheConfig browserCacheConfig; + @Autowired private GlobalVars globalVars; @@ -68,6 +72,8 @@ public class AdminToolsCheckDeployController { response.put("admintool.managers.api.id", managersApiConfig.getId()); response.put("admintool.managers.api.email", managersApiConfig.getEmail()); + response.put("admintool.cache.url", browserCacheConfig.getUrl()); + if(globalVars.date != null) { response.put("Date of deploy", globalVars.date.toString()); } From 4f62befa7411ab5f7d190e5046e2ecbb2fb46a86 Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Fri, 9 Dec 2022 15:01:00 +0200 Subject: [PATCH 2/4] [Admin Tools | log4j2]: Allow curators with profile to be invisible in the Gateway | Dynamically align custom menu. 1. Curator.java & CuratorResponse.java: Added field private boolean visible = true; to allow curators have a profile but not be visible in the Gateway. 2. CuratorService.java: In method "getCurators()" called by /{pid}/curator, return curators that have a profile and the profile is visible. 3. MenuAlignment.java: Enum created for menu alignment options. 4. Menu.java & MenuFull.java: Added field public MenuAlignment featuredAlignment = MenuAlignment.CENTER; to allow dynamic alignment of the Gateway custom menu. 5. MenuController.java: Added api method "alignMenu()" (/community/{pid}/menu/align), to change alignment of the custom menu. 6. MenuService.java: Added method "alignMenu()" | Set featuredAlignment field (default to "CENTER"). --- .../controllers/MenuController.java | 14 ++++++++++---- .../entities/curator/Curator.java | 9 +++++++++ .../entities/curator/CuratorResponse.java | 9 +++++++++ .../uoaadmintools/entities/menu/Menu.java | 18 ++++++++++++++++++ .../entities/menu/MenuAlignment.java | 5 +++++ .../uoaadmintools/entities/menu/MenuFull.java | 17 +++++++++++++++++ .../uoaadmintools/services/CuratorService.java | 2 +- .../uoaadmintools/services/MenuService.java | 14 ++++++++++---- 8 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuAlignment.java diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java index a4f2071..2120169 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/MenuController.java @@ -1,9 +1,6 @@ package eu.dnetlib.uoaadmintools.controllers; -import eu.dnetlib.uoaadmintools.entities.menu.Menu; -import eu.dnetlib.uoaadmintools.entities.menu.MenuFull; -import eu.dnetlib.uoaadmintools.entities.menu.MenuItem; -import eu.dnetlib.uoaadmintools.entities.menu.MenuItemFull; +import eu.dnetlib.uoaadmintools.entities.menu.*; import eu.dnetlib.uoaadmintools.services.MenuService; import eu.dnetlib.uoaadmintoolslibrary.dao.PortalDAO; import eu.dnetlib.uoaadmintoolslibrary.entities.Portal; @@ -209,4 +206,13 @@ public class MenuController { public Menu toggleMenu(@PathVariable(value = "pid") String pid, @RequestParam String status, @RequestParam(value="featured", required=false) String isFeatured) throws Exception { return menuService.toggleMenu(pid, status, isFeatured); } + + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community')," + + "@AuthorizationService.manager('community', #pid))") + @RequestMapping(value = {"/community/{pid}/menu/align"}, method = RequestMethod.POST) + public Menu alignMenu(@PathVariable(value = "pid") String pid, @RequestParam String alignment) throws Exception { + return menuService.alignMenu(pid, alignment); + } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/Curator.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/Curator.java index 41cbe28..c7a9423 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/Curator.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/Curator.java @@ -16,6 +16,7 @@ public class Curator { private List affiliations; private String photo; private String bio; + private boolean visible = true; public Curator() {} @@ -66,4 +67,12 @@ public class Curator { public void setBio(String bio) { this.bio = bio; } + + public boolean isVisible() { + return visible; + } + + public void setVisible(boolean visible) { + this.visible = visible; + } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/CuratorResponse.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/CuratorResponse.java index 8ddbfd7..08c1278 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/CuratorResponse.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/entities/curator/CuratorResponse.java @@ -10,6 +10,7 @@ public class CuratorResponse { private List affiliations; private String photo; private String bio; + private boolean visible = true; public CuratorResponse() { } @@ -52,4 +53,12 @@ public class CuratorResponse { public void setBio(String bio) { this.bio = bio; } + + public boolean isVisible() { + return visible; + } + + public void setVisible(boolean visible) { + this.visible = visible; + } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/Menu.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/Menu.java index d1d2c4d..696c044 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/Menu.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/Menu.java @@ -14,6 +14,7 @@ public class Menu { public boolean isMenuEnabled; public List featuredMenuItems; public List menuItems; + public MenuAlignment featuredAlignment = MenuAlignment.CENTER; public Menu(String portalPid) { this.setPortalPid(portalPid); @@ -21,6 +22,7 @@ public class Menu { this.setFeaturedMenuEnabled(true); this.setMenuItems(new ArrayList<>()); this.setFeaturedMenuItems(new ArrayList<>()); + this.setFeaturedAlignment(MenuAlignment.CENTER.name()); } public String getPortalPid() { @@ -62,4 +64,20 @@ public class Menu { public void setMenuItems(List menuItems) { this.menuItems = menuItems; } + + public String getFeaturedAlignment() { + if(featuredAlignment == null) { + return null; + } + return featuredAlignment.name(); + } + + public void setFeaturedAlignment(String featuredAlignment) { + if(featuredAlignment == null) { + this.featuredAlignment = null; + } else { + MenuAlignment alignment = MenuAlignment.valueOf(featuredAlignment); + this.featuredAlignment = alignment; + } + } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuAlignment.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuAlignment.java new file mode 100644 index 0000000..c976cca --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuAlignment.java @@ -0,0 +1,5 @@ +package eu.dnetlib.uoaadmintools.entities.menu; + +public enum MenuAlignment { + LEFT, CENTER, RIGHT +} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuFull.java b/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuFull.java index 501d4b0..90a7bbd 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuFull.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/entities/menu/MenuFull.java @@ -8,6 +8,7 @@ public class MenuFull { public boolean isMenuEnabled; public List featuredMenuItems; public List menuItems; + public MenuAlignment featuredAlignment = MenuAlignment.CENTER; public String getPortalPid() { return portalPid; @@ -48,4 +49,20 @@ public class MenuFull { public void setMenuItems(List menuItems) { this.menuItems = menuItems; } + + public String getFeaturedAlignment() { + if(featuredAlignment == null) { + return null; + } + return featuredAlignment.name(); + } + + public void setFeaturedAlignment(String featuredAlignment) { + if(featuredAlignment == null) { + this.featuredAlignment = null; + } else { + MenuAlignment alignment = MenuAlignment.valueOf(featuredAlignment); + this.featuredAlignment = alignment; + } + } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java index cfe78ad..a71d219 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/CuratorService.java @@ -29,7 +29,7 @@ public class CuratorService { List curators = new ArrayList<>(); for (Manager manager : managerService.getManagers(pid, ManagerService.Type.ID)) { Curator curator = curatorDAO.findById(parseId(manager.getId())); - if (curator != null) { + if (curator != null && curator.isVisible()) { curators.add(new CuratorResponse(curator)); } } diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java index c65a5b2..bd0c83b 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java @@ -2,10 +2,7 @@ package eu.dnetlib.uoaadmintools.services; import eu.dnetlib.uoaadmintools.dao.MenuDAO; import eu.dnetlib.uoaadmintools.dao.MenuItemDAO; -import eu.dnetlib.uoaadmintools.entities.menu.Menu; -import eu.dnetlib.uoaadmintools.entities.menu.MenuFull; -import eu.dnetlib.uoaadmintools.entities.menu.MenuItem; -import eu.dnetlib.uoaadmintools.entities.menu.MenuItemFull; +import eu.dnetlib.uoaadmintools.entities.menu.*; import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; import org.apache.logging.log4j.LogManager; @@ -86,6 +83,7 @@ public class MenuService { if(menu == null) { menuFull.setFeaturedMenuEnabled(true); menuFull.setMenuEnabled(true); + menuFull.setFeaturedAlignment(MenuAlignment.CENTER.name()); } else { for (String menuItemId : menu.getFeaturedMenuItems()) { featuredMenuItems.add(getFullRootMenuItemById(menuItemId, portalPid, true)); @@ -97,6 +95,7 @@ public class MenuService { menuFull.setFeaturedMenuEnabled(menu.getIsFeaturedMenuEnabled()); menuFull.setMenuEnabled(menu.getIsMenuEnabled()); + menuFull.setFeaturedAlignment(menu.getFeaturedAlignment()); } menuFull.setPortalPid(portalPid); @@ -366,4 +365,11 @@ public class MenuService { } return menuDAO.save(menu); } + + public Menu alignMenu(String pid, String alignment) { + Menu menu = menuDAO.findByPortalPid(pid); + menu.setFeaturedAlignment(alignment); + + return menuDAO.save(menu); + } } From 43a4c1a5a4a596b61a21b11142554af7bc6b88a2 Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Fri, 16 Dec 2022 13:45:03 +0200 Subject: [PATCH 3/4] [Admin Tools | log4j2]: CommunityController.java: In method "updateCommunity()", update also portalPid in the related menu | MenuService.java: Added method "updatePid()". --- .../controllers/CommunityController.java | 1 + .../dnetlib/uoaadmintools/services/MenuService.java | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java b/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java index f09979c..84e9f13 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/controllers/CommunityController.java @@ -72,6 +72,7 @@ public class CommunityController { subscriberService.updatePid(old_pid, new_pid); layoutService.updatePid(old_pid, new_pid); notificationsService.updatePid(old_pid, new_pid); + menuService.updatePid(old_pid, new_pid); } return portalResponse; diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java index bd0c83b..960a339 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java @@ -2,6 +2,7 @@ package eu.dnetlib.uoaadmintools.services; import eu.dnetlib.uoaadmintools.dao.MenuDAO; import eu.dnetlib.uoaadmintools.dao.MenuItemDAO; +import eu.dnetlib.uoaadmintools.entities.Notifications; import eu.dnetlib.uoaadmintools.entities.menu.*; import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; @@ -372,4 +373,14 @@ public class MenuService { return menuDAO.save(menu); } + + public void updatePid(String old_pid, String new_pid) { + log.debug("menu service: updatePid"); + Menu menu = menuDAO.findByPortalPid(old_pid); + if(menu != null) { + menu.setPortalPid(new_pid); + menuDAO.save(menu); + log.debug("menu saved!"); + } + } } From 58f66129453a5e3a53354ebae26dc5b05aa906d2 Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Fri, 16 Dec 2022 14:04:57 +0200 Subject: [PATCH 4/4] [Admin Tools | log4j2]: MenuService.java: [Bug fix] Method "updatePid()" needs to update portalPid in menu and menu items. --- .../eu/dnetlib/uoaadmintools/services/MenuService.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java index 960a339..e43423d 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/services/MenuService.java @@ -382,5 +382,14 @@ public class MenuService { menuDAO.save(menu); log.debug("menu saved!"); } + + List menuItems = menuItemDAO.findByPortalPid(old_pid); + if(menuItems != null) { + menuItems.forEach(menuItem -> { + menuItem.setPortalPid(new_pid); + menuItemDAO.save(menuItem); + log.debug("menuItem saved!"); + }); + } } }