From f99c040f46526a20c7ae6a94f20f2f6ce085ae50 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Thu, 2 Jul 2020 08:05:37 +0200 Subject: [PATCH] OO-2036: add more links in authoring environment --- .../id/context/BusinessControlFactory.java | 12 ++++++- .../BusinessGroupListFlexiTableModel.java | 4 ++- .../ui/author/AuthorListController.java | 32 ++++++++++++------- .../ui/author/AuthoringEntryDataModel.java | 15 +++++++-- .../author/OverviewAuthoringController.java | 7 ++++ 5 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/olat/core/id/context/BusinessControlFactory.java b/src/main/java/org/olat/core/id/context/BusinessControlFactory.java index 8d6323e82c8..e8f13d3c50b 100644 --- a/src/main/java/org/olat/core/id/context/BusinessControlFactory.java +++ b/src/main/java/org/olat/core/id/context/BusinessControlFactory.java @@ -539,7 +539,17 @@ public class BusinessControlFactory { return getURLFromBusinessPathString("url", bPathString); } - public String getAuthenticatedURLFromBusinessPathString(String bPathString){ + public String getAuthenticatedURLFromBusinessPathStrings(String... bPathString) { + StringBuilder sb = new StringBuilder(); + for(String path:bPathString) { + if(path != null) { + sb.append(path); + } + } + return getAuthenticatedURLFromBusinessPathString(sb.toString()); + } + + public String getAuthenticatedURLFromBusinessPathString(String bPathString) { return getURLFromBusinessPathString("auth", bPathString); } diff --git a/src/main/java/org/olat/group/ui/main/BusinessGroupListFlexiTableModel.java b/src/main/java/org/olat/group/ui/main/BusinessGroupListFlexiTableModel.java index 74e94972d2b..4263e266990 100644 --- a/src/main/java/org/olat/group/ui/main/BusinessGroupListFlexiTableModel.java +++ b/src/main/java/org/olat/group/ui/main/BusinessGroupListFlexiTableModel.java @@ -43,6 +43,8 @@ import org.olat.group.BusinessGroupMembership; public class BusinessGroupListFlexiTableModel extends DefaultFlexiTableDataModel<BGTableItem> implements SortableFlexiTableDataModel<BGTableItem>, FlexiBusinessPathModel { + private static final Cols[] COLS = Cols.values(); + private final Locale locale; /** @@ -69,7 +71,7 @@ public class BusinessGroupListFlexiTableModel extends DefaultFlexiTableDataModel @Override public Object getValueAt(BGTableItem wrapped, int col) { - switch (Cols.values()[col]) { + switch (COLS[col]) { case createionDate: return wrapped.getCreationDate(); case name: diff --git a/src/main/java/org/olat/repository/ui/author/AuthorListController.java b/src/main/java/org/olat/repository/ui/author/AuthorListController.java index 4087f59c6f8..bb7b474463c 100644 --- a/src/main/java/org/olat/repository/ui/author/AuthorListController.java +++ b/src/main/java/org/olat/repository/ui/author/AuthorListController.java @@ -87,6 +87,7 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.id.Roles; +import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; @@ -1188,7 +1189,7 @@ public class AuthorListController extends FormBasicController implements Activat } private void launchCatalog(UserRequest ureq, RepositoryEntryRef ref) { - String businessPath = "[RepositoryEntry:" + ref.getKey() + "][Catalog:0]"; + String businessPath = "[RepositoryEntry:" + ref.getKey() + "][Settings:0][Catalog:0]"; NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl()); } @@ -1296,6 +1297,11 @@ public class AuthorListController extends FormBasicController implements Activat refLink.setCustomDisplayText(StringHelper.escapeHtml(ref.getDisplayname())); refLink.setUserObject(ref); refLink.setIconLeftCSS("o_icon o_icon-fw " + RepositoyUIFactory.getIconCssClass(ref)); + + String businessPath = "[RepositoryEntry:" + ref.getKey() + "]"; + String url = BusinessControlFactory.getInstance().getAuthenticatedURLFromBusinessPathString(businessPath); + refLink.setUrl(url); + refLinks.add(name); } mainVC.contextPut("referenceLinks", refLinks); @@ -1360,11 +1366,11 @@ public class AuthorListController extends FormBasicController implements Activat List<String> links = new ArrayList<>(); if(isOwner) { - addLink("tools.edit.description", "description", "o_icon o_icon-fw o_icon_details", links); + addLink("tools.edit.description", "description", "o_icon o_icon-fw o_icon_details", "/Settings/0/Info/0", links); if(repositoryModule.isCatalogEnabled()) { - addLink("tools.edit.catalog", "catalog", "o_icon o_icon-fw o_icon_catalog", links); + addLink("tools.edit.catalog", "catalog", "o_icon o_icon-fw o_icon_catalog", "/Settings/0/Catalog/0", links); } - addLink("details.members", "members", "o_icon o_icon-fw o_icon_membersmanagement", links); + addLink("details.members", "members", "o_icon o_icon-fw o_icon_membersmanagement", "/MembersMgmt/0", links); } boolean copyManaged = RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.copy); @@ -1394,13 +1400,13 @@ public class AuthorListController extends FormBasicController implements Activat if(canCopy || canDownload) { links.add("-"); if (canCopy) { - addLink("details.copy", "copy", "o_icon o_icon-fw o_icon_copy", links); + addLink("details.copy", "copy", "o_icon o_icon-fw o_icon_copy", "/Infos/0", links); } if (canConvertLearningPath) { - addLink("details.convert.learning.path", "convertLearningPath", "o_icon o_icon-fw o_icon_learning_path", links); + addLink("details.convert.learning.path", "convertLearningPath", "o_icon o_icon-fw o_icon_learning_path", null, links); } if(canDownload) { - addLink("details.download", "download", "o_icon o_icon-fw o_icon_download", links); + addLink("details.download", "download", "o_icon o_icon-fw o_icon_download", null, links); } } @@ -1416,12 +1422,12 @@ public class AuthorListController extends FormBasicController implements Activat boolean closed = entry.getEntryStatus() == RepositoryEntryStatusEnum.closed; if(closed && "CourseModule".equals(entry.getOlatResource().getResourceableTypeName())) { - addLink("details.override.close", "override-close", "o_icon o_icon-fw o_icon_close_resource", links); + addLink("details.override.close", "override-close", "o_icon o_icon-fw o_icon_close_resource", null, links); } else if(canClose) { - addLink("details.close.ressoure", "close", "o_icon o_icon-fw o_icon_close_resource", links); + addLink("details.close.ressoure", "close", "o_icon o_icon-fw o_icon_close_resource", null, links); } if(!deleteManaged) { - addLink("details.delete", "delete", "o_icon o_icon-fw o_icon_delete_item", links); + addLink("details.delete", "delete", "o_icon o_icon-fw o_icon_delete_item", null, links); } } @@ -1429,11 +1435,15 @@ public class AuthorListController extends FormBasicController implements Activat putInitialPanel(mainVC); } - private void addLink(String name, String cmd, String iconCSS, List<String> links) { + private void addLink(String name, String cmd, String iconCSS, String path, List<String> links) { Link link = LinkFactory.createLink(name, cmd, getTranslator(), mainVC, this, Link.LINK); if(iconCSS != null) { link.setIconLeftCSS(iconCSS); } + if(path != null) { + String url = row.getUrl().concat(path); + link.setUrl(url); + } mainVC.put(name, link); links.add(name); } diff --git a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java index bec13cae45f..cd4bd8a9b13 100644 --- a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java +++ b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java @@ -89,11 +89,20 @@ class AuthoringEntryDataModel extends DefaultFlexiTableDataSourceModel<Authoring super.clear(); getSourceDelegate().resetCount(); } - + @Override public String getUrl(Component source, Object object, String action) { - if("select".equals(action) && object instanceof AuthoringEntryRow) { - return ((AuthoringEntryRow)object).getUrl(); + if(action == null) return null; + + AuthoringEntryRow row = (AuthoringEntryRow)object; + if("select".equals(action)) { + return row.getUrl(); + } + if("details".equals(action)) { + return row.getUrl().concat("/Infos/0"); + } + if("edit".equals(action)) { + return row.getUrl().concat("/Editor/0"); } return null; } diff --git a/src/main/java/org/olat/repository/ui/author/OverviewAuthoringController.java b/src/main/java/org/olat/repository/ui/author/OverviewAuthoringController.java index 4df6d5881ea..d4bfc15148b 100644 --- a/src/main/java/org/olat/repository/ui/author/OverviewAuthoringController.java +++ b/src/main/java/org/olat/repository/ui/author/OverviewAuthoringController.java @@ -60,6 +60,8 @@ import org.olat.util.logging.activity.LoggingResourceable; */ public class OverviewAuthoringController extends BasicController implements Activateable2, GenericEventListener { + private static final String REPOSITORY_PATH = "[RepositorySite:0]"; + private MainPanel mainPanel; private final VelocityContainer mainVC; private final SegmentViewComponent segmentView; @@ -96,16 +98,21 @@ public class OverviewAuthoringController extends BasicController implements Acti segmentView = SegmentViewFactory.createSegmentView("segments", mainVC, this); segmentView.setReselect(true); + BusinessControlFactory bFactory = BusinessControlFactory.getInstance(); if(!isGuestOnly) { favoriteLink = LinkFactory.createLink("search.mark", mainVC, this); + favoriteLink.setUrl(bFactory.getAuthenticatedURLFromBusinessPathStrings(REPOSITORY_PATH, "[Favorits:0]")); segmentView.addSegment(favoriteLink, false); } myEntriesLink = LinkFactory.createLink("search.my", mainVC, this); + myEntriesLink.setUrl(bFactory.getAuthenticatedURLFromBusinessPathStrings(REPOSITORY_PATH, "[My:0]")); segmentView.addSegment(myEntriesLink, false); searchLink = LinkFactory.createLink("search.generic", mainVC, this); + searchLink.setUrl(bFactory.getAuthenticatedURLFromBusinessPathStrings(REPOSITORY_PATH, "[Search:0]")); segmentView.addSegment(searchLink, false); if(roles.isAuthor() || isAdministrator) { deletedLink = LinkFactory.createLink("search.deleted", mainVC, this); + deletedLink.setUrl(bFactory.getAuthenticatedURLFromBusinessPathStrings(REPOSITORY_PATH, "[Deleted:0]")); segmentView.addSegment(deletedLink, false); } -- GitLab