From dcd1c8964c4a021191ec57b8817ce7af644f9515 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 31 Jul 2017 10:05:49 +0200 Subject: [PATCH] OO-2935: remove unused link top for the full text search results, fix NPE if the context entry is null (it's the case if the user search for the name of the course element) --- .../course/DialogCourseNodeIndexer.java | 15 ++++++++++----- .../repository/course/FOCourseNodeIndexer.java | 2 +- .../org/olat/search/ui/ResultsController.java | 12 ++++-------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/olat/search/service/indexer/repository/course/DialogCourseNodeIndexer.java b/src/main/java/org/olat/search/service/indexer/repository/course/DialogCourseNodeIndexer.java index 21fcae12146..880100a0c98 100644 --- a/src/main/java/org/olat/search/service/indexer/repository/course/DialogCourseNodeIndexer.java +++ b/src/main/java/org/olat/search/service/indexer/repository/course/DialogCourseNodeIndexer.java @@ -158,12 +158,16 @@ public class DialogCourseNodeIndexer extends DefaultIndexer implements CourseNod @Override public boolean checkAccess(ContextEntry contextEntry, BusinessControl businessControl, Identity identity, Roles roles) { ContextEntry ce = businessControl.popLauncherContextEntry(); + if(ce == null || ce.getOLATResourceable() == null || ce.getOLATResourceable().getResourceableId() == null) { + return true;// it's the node itself + } + OLATResourceable ores = ce.getOLATResourceable(); if(isLogDebugEnabled()) logDebug("OLATResourceable=" + ores); - if ( (ores != null) && (ores.getResourceableTypeName().startsWith("path=")) ) { + if (ores.getResourceableTypeName().startsWith("path=")) { // => it is a file element, typeName format: 'path=/test1/test2/readme.txt' return true; - } else if ((ores != null) && ores.getResourceableTypeName().equals( OresHelper.calculateTypeName(Message.class) ) ) { + } else if (ores.getResourceableTypeName().equals(OresHelper.calculateTypeName(Message.class))) { // it is message => check message access Long resourceableId = ores.getResourceableId(); Message message = ForumManager.getInstance().loadMessage(resourceableId); @@ -174,9 +178,10 @@ public class DialogCourseNodeIndexer extends DefaultIndexer implements CourseNod boolean isMessageHidden = Status.getStatus(threadtop.getStatusCode()).isHidden(); //assumes that if is owner then is moderator so it is allowed to see the hidden forum threads //TODO: (LD) fix this!!! - the contextEntry is not the right context for this check - boolean isOwner = BaseSecurityManager.getInstance().isIdentityPermittedOnResourceable(identity, Constants.PERMISSION_ACCESS, contextEntry.getOLATResourceable()); - if(isMessageHidden && !isOwner) { - return false; + if(isMessageHidden) { + boolean isOwner = BaseSecurityManager.getInstance() + .isIdentityPermittedOnResourceable(identity, Constants.PERMISSION_ACCESS, contextEntry.getOLATResourceable()); + return isOwner; } return true; } else { diff --git a/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java b/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java index 8ff69fc8bc3..f5829c97828 100644 --- a/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java +++ b/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java @@ -86,7 +86,7 @@ public class FOCourseNodeIndexer extends ForumIndexer implements CourseNodeIndex public boolean checkAccess(ContextEntry contextEntry, BusinessControl businessControl, Identity identity, Roles roles) { ContextEntry ce = businessControl.popLauncherContextEntry(); if(ce == null || ce.getOLATResourceable() == null || ce.getOLATResourceable().getResourceableId() == null) { - return false; + return true;//it's the node itself } Long resourceableId = ce.getOLATResourceable().getResourceableId(); diff --git a/src/main/java/org/olat/search/ui/ResultsController.java b/src/main/java/org/olat/search/ui/ResultsController.java index 31e05d3976d..2311601ccbf 100644 --- a/src/main/java/org/olat/search/ui/ResultsController.java +++ b/src/main/java/org/olat/search/ui/ResultsController.java @@ -52,7 +52,7 @@ import org.olat.search.model.ResultDocument; * @author srosse, stephane.rosse@frentix.com */ public class ResultsController extends FormBasicController { - private FormLink previousTopLink, nextTopLink, previousLink, nextLink; + private FormLink previousLink, nextLink; private FormLink highlightLink, dishighlightLink; private int currentPage; @@ -77,10 +77,8 @@ public class ResultsController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { previousLink = uifactory.addFormLink("previous.page", formLayout); - previousTopLink = uifactory.addFormLink("previous.top.page", null, "previous.page", formLayout, Link.LINK); nextLink = uifactory.addFormLink("next.page", formLayout); - nextTopLink = uifactory.addFormLink("next.top.page", null, "next.page", formLayout, Link.LINK); - + highlightLink = uifactory.addFormLink("highlight.page", "enable.highlighting", "enable.highlighting", formLayout, Link.LINK); dishighlightLink = uifactory.addFormLink("dishighlight.page", "disable.highlighting", "disable.highlighting", formLayout, Link.LINK); flc.contextPut("highlight", true); @@ -158,9 +156,7 @@ public class ResultsController extends FormBasicController { flc.contextPut("currentPage", currentPage + 1); previousLink.setEnabled(currentPage != 0); - previousTopLink.setEnabled(currentPage != 0); nextLink.setEnabled(currentPage != getMaxPage()); - nextTopLink.setEnabled(currentPage != getMaxPage()); String [] args = {Integer.toString(getStartResult()), Integer.toString(getEndResult()), Integer.toString(getNumOfResults())}; flc.contextPut("resultTitle", getTranslator().translate("search.result.title",args)); @@ -186,9 +182,9 @@ public class ResultsController extends FormBasicController { highlight = false; flc.contextPut("highlight", highlight); reload(ureq); - } else if (source == previousLink || source == previousTopLink) { + } else if (source == previousLink) { setSearchResults(ureq, Math.max(0, --currentPage)); - } else if (source == nextLink || source == nextTopLink) { + } else if (source == nextLink) { if(documents.size() <= (currentPage + 1) * RESULT_PER_PAGE) { SearchEvent e = new SearchEvent(getLastLucenePosition() + 1, RESULT_PER_PAGE); fireEvent(ureq, e); -- GitLab