diff --git a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java index d7883a94c7c1c326fef6d9714c52e2318aaa1fe1..97d727777ef9118ca4f94f5245cdd0ed2191ca52 100644 --- a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java +++ b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java @@ -514,9 +514,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre BreadCrumb crumb = (BreadCrumb)currentLink.getUserObject(); if(crumb.getController() == null) { if(crumbIndex - 1 >= 0) { - Link parentLink = stack.get(crumbIndex - 1); - BreadCrumb parentCrumb = (BreadCrumb)parentLink.getUserObject(); - setContent(parentCrumb.getController()); + setContent(crumbIndex - 1); } } else { setContent(crumb.getController()); diff --git a/src/main/java/org/olat/core/util/pdf/PdfDocument.java b/src/main/java/org/olat/core/util/pdf/PdfDocument.java index fe4da289e1924ba9f1d15eb3aa3763c640baf4cb..221d8dc3a32513d55269358ad9f6ac1a7510f66a 100644 --- a/src/main/java/org/olat/core/util/pdf/PdfDocument.java +++ b/src/main/java/org/olat/core/util/pdf/PdfDocument.java @@ -153,7 +153,7 @@ public class PdfDocument { text = ""; } else { String subString = text.substring(0, spaceIndex); - float size = fontSize * textFont.getStringWidth(subString) / 1000; + float size = getStringWidth(subString, textFont, fontSize); if (size > paragraphWidth) { if (lastSpace < 0) // So we have a word longer than the line... draw it anyways lastSpace = spaceIndex; @@ -179,15 +179,20 @@ public class PdfDocument { } public float getStringWidth(String string, float fontSize) + throws IOException { + return getStringWidth(string, font, fontSize); + } + + public float getStringWidth(String string, PDFont textFont, float fontSize) throws IOException { if(string == null || string.length() == 0) return 0.0f; try { string = cleanString(string); - return fontSize * font.getStringWidth(string) / 1000; + return fontSize * textFont.getStringWidth(string) / 1000; } catch (IllegalArgumentException e) { log.error("", e); - return getStringEstimatedWidth(string.length(), fontSize); + return getStringEstimatedWidth(string.length(), textFont, fontSize); } } @@ -199,10 +204,10 @@ public class PdfDocument { * @return A width * @throws IOException */ - public float getStringEstimatedWidth(int length, float fontSize) throws IOException { + public float getStringEstimatedWidth(int length, PDFont textFont, float fontSize) throws IOException { char[] onlyA = new char[length]; Arrays.fill(onlyA, 'A'); - return fontSize * font.getStringWidth(String.valueOf(onlyA)) / 1000.0f; + return fontSize * textFont.getStringWidth(String.valueOf(onlyA)) / 1000.0f; } public static String cleanString(String string) { diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java index 151037f62c62f6cf1e408481d3d753052e389f67..79698c6bf3e8894a3151c49be4b4c73a3afb8339 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java @@ -205,13 +205,16 @@ public class CorrectionAssessmentItemListController extends FormBasicController for(Map.Entry<Identity, AssessmentTestSession> entry:model.getLastSessions().entrySet()) { if(model.getLastSessions().containsKey(entry.getKey())) { TestSessionState testSessionState = model.getTestSessionStates().get(entry.getKey()); - for(Map.Entry<TestPlanNodeKey, ItemSessionState> itemEntry:testSessionState.getItemSessionStates().entrySet()) { - String itemRefIdentifier = itemEntry.getKey().getIdentifier().toString(); - CorrectionAssessmentItemRow row = itemRefIdToRows.get(itemRefIdentifier); - if(row != null) { - AssessmentItemSession itemSession = itemSessionMap - .get(new ItemSessionKey(entry.getValue().getKey(), itemRefIdentifier)); - appendStatistics(row, itemSession, itemEntry.getValue()); + Map<TestPlanNodeKey, ItemSessionState> itemSessionStates = (testSessionState == null ? null : testSessionState.getItemSessionStates()); + if(itemSessionStates != null) { + for(Map.Entry<TestPlanNodeKey, ItemSessionState> itemEntry:itemSessionStates.entrySet()) { + String itemRefIdentifier = itemEntry.getKey().getIdentifier().toString(); + CorrectionAssessmentItemRow row = itemRefIdToRows.get(itemRefIdentifier); + if(row != null) { + AssessmentItemSession itemSession = itemSessionMap + .get(new ItemSessionKey(entry.getValue().getKey(), itemRefIdentifier)); + appendStatistics(row, itemSession, itemEntry.getValue()); + } } } } diff --git a/src/main/java/org/olat/modules/fo/manager/ForumManager.java b/src/main/java/org/olat/modules/fo/manager/ForumManager.java index 3a983944f3f134bf1467d08a96e8e116720f0581..39011f62d3eaff47791c0e0221efb23638695ea4 100644 --- a/src/main/java/org/olat/modules/fo/manager/ForumManager.java +++ b/src/main/java/org/olat/modules/fo/manager/ForumManager.java @@ -778,12 +778,11 @@ public class ForumManager { * @param creator * @param replyToMessage */ - public void replyToMessage(Message newMessage, Message replyToMessage) { + public Message replyToMessage(Message newMessage, Message replyToMessage) { Message top = replyToMessage.getThreadtop(); newMessage.setThreadtop((top != null ? top : replyToMessage)); newMessage.setParent(replyToMessage); - - saveMessage(newMessage); + return saveMessage(newMessage); } /** @@ -791,10 +790,10 @@ public class ForumManager { * @param forum * @param topMessage */ - public void addTopMessage(Message topMessage) { + public Message addTopMessage(Message topMessage) { topMessage.setParent(null); topMessage.setThreadtop(null); - saveMessage(topMessage); + return saveMessage(topMessage); } /** diff --git a/src/main/java/org/olat/modules/fo/ui/MessageEditController.java b/src/main/java/org/olat/modules/fo/ui/MessageEditController.java index 1c5f6a6f2b594aff27a28c37516d94d2a77dbf93..820b774102190f809c3f1e3e91bf7f99a812fd4a 100644 --- a/src/main/java/org/olat/modules/fo/ui/MessageEditController.java +++ b/src/main/java/org/olat/modules/fo/ui/MessageEditController.java @@ -494,7 +494,7 @@ public class MessageEditController extends FormBasicController { if(editMode == EditMode.newThread) { if(foCallback.mayOpenNewThread()) { // save a new thread - fm.addTopMessage(message); + message = fm.addTopMessage(message); fm.markNewMessageAsRead(getIdentity(), forum, message); persistTempUploadedFiles(message); // if notification is enabled -> notify the publisher about news @@ -527,7 +527,7 @@ public class MessageEditController extends FormBasicController { showWarning("may.not.save.msg.as.author"); } } else if(editMode == EditMode.reply) { - fm.replyToMessage(message, parentMessage); + message = fm.replyToMessage(message, parentMessage); fm.markNewMessageAsRead(getIdentity(), forum, message); persistTempUploadedFiles(message); notifiySubscription(); @@ -657,11 +657,7 @@ public class MessageEditController extends FormBasicController { * @return the edited message */ public Message getMessage() { - if (!StringHelper.containsNonWhitespace(message.getTitle()) && message == null) { - throw new AssertException("Getting back the edited message failed! You first have to edit one and intialize properly!"); - } else { - return message; - } + return message; } /** diff --git a/src/main/java/org/olat/modules/fo/ui/MessageListController.java b/src/main/java/org/olat/modules/fo/ui/MessageListController.java index 2674bb9d4ca97658b8ec887fb8924559692f7265..17de0884c23ebbd53700bf118784ee383466f25f 100644 --- a/src/main/java/org/olat/modules/fo/ui/MessageListController.java +++ b/src/main/java/org/olat/modules/fo/ui/MessageListController.java @@ -310,7 +310,7 @@ public class MessageListController extends BasicController implements GenericEve } else { scrollTo(message); } - } else if(message != null) { + } else if(message != null && message.getKey() != null) { MessageView view = loadView(ureq, message); int index = 0; for(int i=0; i<backupViews.size(); i++) {