diff --git a/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java b/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java index 446d769852c1c9c25e71a40dd47599f10cdaf35d..b85dc027c8e89cd5127fc94e7c66424300ef340e 100644 --- a/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java +++ b/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java @@ -214,6 +214,12 @@ public class OnyxRunController extends BasicController { if (viewmode != SURVEYVIEW) { ScoreEvaluation se = null; + + //<OLATCE-1232> + boolean isVisibilityPeriod = AssessmentHelper.isResultVisible(modConfig); + vc.contextPut("showResultsVisible", new Boolean(isVisibilityPeriod)); + //</OLATCE-1232> + if (courseNodeTest != null) { // <OLATCE-498> Integer attempts = courseNodeTest.getUserAttempts(userCourseEnv); @@ -271,7 +277,7 @@ public class OnyxRunController extends BasicController { if (hasResult) { vc.contextPut("hasResult", Boolean.TRUE); boolean isPassesSet = se.getPassed() != null; - vc.contextPut(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE, modConfig.get(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE)); + vc.contextPut("showResultsOnHomePage", modConfig.get(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE)); if (isPassesSet) { vc.contextPut("passed", se.getPassed()); } else { diff --git a/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html b/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html index 897543b96e13617544ad76add644256374d19463..d2a8279deda1f514c2c58c9c96fd8d97b72ed489 100644 --- a/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html +++ b/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html @@ -1,4 +1,3 @@ -## <h3>$!menuTitle</h3> <i>$!displayTitle</i> @@ -24,38 +23,26 @@ #end </td> </tr> - <tr> - #if ($attampts) - <td> - $r.translate("attempts.yourattempts"): - </td> - <td> - $attempts - </td> - #end + #if($attempts) + <tr> + <td>$r.translate("attempts.yourattempts"):</td> + <td>$attempts</td> </tr> + #end #if ($attempts && $attempts >0 || $self) <tr> <td colspan="2"><b>$r.translate("attempts.result")</b></td> </tr> #foreach ($var in $qtivars) <tr> - <td> - ${var.getIdentifier()}: - </td> - <td> - ${var.getValue()} - </td> + <td>${var.getIdentifier()}:</td> + <td>${var.getValue()}</td> </tr> - #end - #if ($hasResult == true) - <tr> - <td> - $r.translate("score.yourscore"): - </td> - <td> - $score - </td> + #end + #if ($hasResult == true) + <tr> + <td>$r.translate("score.yourscore"):</td> + <td>$score</td> </tr> ##<OLATCE-1014> hide status - line if there is no passed value set #if($passed != "") @@ -73,13 +60,11 @@ ##<OLATCE-1014> #end ##</OLATCE-1014> - #else + #else <tr> - <td> - $r.translate("no.testresults") - </td> + <td colspan="2">$r.translate("no.testresults")</td> </tr> - #end + #end <tr> <td> #if($showResultsOnHomePage && $attempts && $attempts >0) diff --git a/src/main/java/org/olat/NewControllerFactory.java b/src/main/java/org/olat/NewControllerFactory.java index 9a2960af31b21a8372fec375bdef115ac048e90f..2e3bca280f0d047599c69337d0afa036666f9e44 100644 --- a/src/main/java/org/olat/NewControllerFactory.java +++ b/src/main/java/org/olat/NewControllerFactory.java @@ -140,7 +140,10 @@ public class NewControllerFactory extends LogDelegator { private ContextEntryControllerCreator getContextEntryControllerCreator(String type) { ContextEntryControllerCreator typeHandler = contextEntryControllerCreators.get(type); - return typeHandler.clone(); + if(typeHandler != null) { + return typeHandler.clone(); + } + return null; } /** diff --git a/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java b/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java index 5e6becf4a2276875a5cc5c189f0de719eb06c5b3..a9a40a3ccda2e1aebf57413c2758047e9683d352 100644 --- a/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java +++ b/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java @@ -104,7 +104,7 @@ public class ResumeController extends FormBasicController implements SupportsAft //make the resume secure. If something fail, don't generate a red screen NewControllerFactory.getInstance().launch(ureq, bwControl); } catch (Exception e) { - logError("Error while resumging", e); + logError("Error while resuming", e); } } return false; diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java index f04a3ef89ccd10f5f8be23127b2c1912281b3946..e819c25820dede08c6c430c57663929ade8faf97 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java @@ -105,6 +105,7 @@ public class RichTextConfiguration implements Disposable { private static final String FORCED_ROOT_BLOCK = "forced_root_block"; private static final String FORCED_ROOT_BLOCK_VALUE_NOROOT = ""; private static final String DOCUMENT_BASE_URL = "document_base_url"; + private static final String PASTE_DATA_IMAGES = "paste_data_images"; // // Generic boolean true / false values private static final String VALUE_FALSE = "false"; @@ -258,6 +259,7 @@ public class RichTextConfiguration implements Disposable { setQuotedConfigValue(EXTENDED_VALID_ELEMENTS, EXTENDED_VALID_ELEMENTS_VALUE_FULL); setQuotedConfigValue(INVALID_ELEMENTS, INVALID_ELEMENTS_FILE_FULL_VALUE_UNSAVE); + setNonQuotedConfigValue(PASTE_DATA_IMAGES, "true"); // Setup file and link browser if (baseContainer != null) { setFileBrowserCallback(baseContainer, customLinkTreeModel, IMAGE_SUFFIXES_VALUES, MEDIA_SUFFIXES_VALUES, FLASH_PLAYER_SUFFIXES_VALUES); diff --git a/src/main/java/org/olat/course/assessment/AssessmentHelper.java b/src/main/java/org/olat/course/assessment/AssessmentHelper.java index d8c1a0e5552dc8cffcd892ec613ccb2dfd404469..d72dd7e8dc50067d69b7df5e3f944336b68a9766 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentHelper.java +++ b/src/main/java/org/olat/course/assessment/AssessmentHelper.java @@ -436,17 +436,16 @@ public class AssessmentHelper { public static boolean isResultVisible(ModuleConfiguration modConfig) { boolean isVisible = false; Boolean showResultsActive = (Boolean)modConfig.get(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS); - if(showResultsActive!=null && showResultsActive.booleanValue()) { - Date startDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_START_DATE); - Date endDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_END_DATE); - Date currentDate = new Date(); - if(currentDate.after(startDate) && (endDate==null || currentDate.before(endDate))) { - isVisible = true; - } + if(showResultsActive != null && showResultsActive.booleanValue()) { + Date startDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_START_DATE); + Date endDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_END_DATE); + Date currentDate = new Date(); + if(startDate != null && currentDate.after(startDate) && (endDate == null || currentDate.before(endDate))) { + isVisible = true; + } } else { isVisible = true; } return isVisible; } - } \ No newline at end of file diff --git a/src/main/java/org/olat/course/site/CourseSiteDef.java b/src/main/java/org/olat/course/site/CourseSiteDef.java index 4487d7e0ed329c5a9581af0bede6f51a9754a35e..9d4462474e22865a5ce89e51bf33a7ebeb8a2265 100644 --- a/src/main/java/org/olat/course/site/CourseSiteDef.java +++ b/src/main/java/org/olat/course/site/CourseSiteDef.java @@ -98,6 +98,15 @@ public class CourseSiteDef extends AbstractSiteDefinition implements SiteDefinit return null; } String icon = courseConfig.getNavIconCssClass(); + return createCourseSiteInstance(ureq, langConfig, showToolController, siteSecCallback, icon); + } + + /** + * Warning: there is no check against null. + * It's only to return the right type, CourseSie or CourseSite2. + */ + protected CourseSite createCourseSiteInstance(UserRequest ureq, LanguageConfiguration langConfig, + boolean showToolController, SiteSecurityCallback siteSecCallback, String icon) { return new CourseSite(this, ureq.getLocale(), langConfig.getRepoSoftKey(), showToolController, siteSecCallback, langConfig.getTitle(), icon); } diff --git a/src/main/java/org/olat/course/site/CourseSiteDef2.java b/src/main/java/org/olat/course/site/CourseSiteDef2.java index a6401dc5773febec11a43e140abbf01949ddee31..eb1785b94160492424d42af59d82ba2cb06495c0 100644 --- a/src/main/java/org/olat/course/site/CourseSiteDef2.java +++ b/src/main/java/org/olat/course/site/CourseSiteDef2.java @@ -20,8 +20,11 @@ package org.olat.course.site; import org.olat.core.CoreSpringFactory; +import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.navigation.SiteDefinitions; +import org.olat.core.gui.control.navigation.SiteSecurityCallback; import org.olat.course.site.model.CourseSiteConfiguration; +import org.olat.course.site.model.LanguageConfiguration; /** * @@ -39,4 +42,11 @@ public class CourseSiteDef2 extends CourseSiteDef { CourseSiteConfiguration config = siteModule.getConfigurationCourseSite2(); return config; } + + @Override + protected CourseSite createCourseSiteInstance(UserRequest ureq, LanguageConfiguration langConfig, + boolean showToolController, SiteSecurityCallback siteSecCallback, String icon) { + return new CourseSite2(this, ureq.getLocale(), langConfig.getRepoSoftKey(), showToolController, + siteSecCallback, langConfig.getTitle(), icon); + } } diff --git a/src/main/java/org/olat/dispatcher/RESTDispatcher.java b/src/main/java/org/olat/dispatcher/RESTDispatcher.java index 38da54bad0975bf4f8f6d6d1d6f4f0beb2f3f997..8a882bfe293ee1bcba7bf71c02550f5c62bb383a 100644 --- a/src/main/java/org/olat/dispatcher/RESTDispatcher.java +++ b/src/main/java/org/olat/dispatcher/RESTDispatcher.java @@ -48,6 +48,7 @@ import org.olat.core.id.context.BusinessControl; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.logging.activity.ThreadLocalUserActivityLoggerInstaller; import org.olat.core.util.StringHelper; import org.olat.core.util.UserSession; import org.olat.core.util.WebappHelper; @@ -138,6 +139,9 @@ public class RESTDispatcher implements Dispatcher { // create the olat ureq and get an associated main window to spawn the "tab" // UserSession usess = CoreSpringFactory.getImpl(UserSessionManager.class).getUserSession(request); + if(usess != null) { + ThreadLocalUserActivityLoggerInstaller.initUserActivityLogger(request); + } UserRequest ureq = null; try { //upon creation URL is checked for diff --git a/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java b/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java index 4b737d2ea32f1368ee6ea297d177c222354d8d32..195406faafc1a9453bc3d802f57866b0e0ec7d9d 100644 --- a/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java +++ b/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java @@ -43,6 +43,7 @@ import org.olat.core.gui.render.URLBuilder; import org.olat.core.id.Identity; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.logging.activity.ThreadLocalUserActivityLoggerInstaller; import org.olat.core.util.StringHelper; import org.olat.core.util.UserSession; import org.olat.core.util.WebappHelper; @@ -138,6 +139,9 @@ public class RemoteLoginformDispatcher implements Dispatcher { } UserSession usess = ureq.getUserSession(); + //re-init the activity logger to pass the user session and identity + ThreadLocalUserActivityLoggerInstaller.initUserActivityLogger(request); + //sync over the UserSession Instance to prevent double logins synchronized (usess) { // Login user, set up everything diff --git a/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java b/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java index 6df832ab4fbabcd078d2c8a0362d4ff6d1a31b81..8aea250ad1eabea2640e31b0dc5a3713d2ece20f 100644 --- a/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java +++ b/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java @@ -35,7 +35,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.lang.StringEscapeUtils; import org.olat.NewControllerFactory; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; @@ -317,7 +316,8 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus return -comparisonResult; } return comparisonResult; - }}; + } + }; } /** @@ -328,7 +328,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus * Initial Date: 10.12.2007 <br> * @author Lavinia Dumitrescu */ - private class GroupTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry> { + private static class GroupTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry> { public GroupTableDataModel(List<PortletEntry<BusinessGroupEntry>> objects) { super(objects, 1); } @@ -338,9 +338,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus BusinessGroupEntry businessGroup = entry.getValue(); switch (col) { case 0: - String name = businessGroup.getName(); - name = StringEscapeUtils.escapeHtml(name).toString(); - return name; + return businessGroup.getName(); default: return "ERROR"; } @@ -360,7 +358,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus * Initial Date: 10.12.2007 <br> * @author Lavinia Dumitrescu */ - private class GroupsManualSortingTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry> { + private static class GroupsManualSortingTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry> { /** * @param objects * @param locale @@ -396,7 +394,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus } } - private class GroupPortletEntry implements PortletEntry<BusinessGroupEntry> { + private static class GroupPortletEntry implements PortletEntry<BusinessGroupEntry> { private BusinessGroupEntry value; private Long key; diff --git a/src/main/java/org/olat/search/service/indexer/JmsIndexer.java b/src/main/java/org/olat/search/service/indexer/JmsIndexer.java index 1ebabed6de12298d0386dee12e286ce7301c822d..d084f639515f837f280289035f0eeb227d403cbc 100644 --- a/src/main/java/org/olat/search/service/indexer/JmsIndexer.java +++ b/src/main/java/org/olat/search/service/indexer/JmsIndexer.java @@ -350,6 +350,8 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer { */ @Override public void addDocument(Document document) { + if(document == null) return;//nothing to do + IndexWriter writer = null; try { String resourceUrl = document.get(AbstractOlatDocument.RESOURCEURL_FIELD_NAME); @@ -357,8 +359,8 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer { DirectoryReader reader = getReader(); IndexSearcher searcher = new IndexSearcher(reader); - TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10); - writer = permanentIndexWriter.getAndLock(); + TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10); + writer = permanentIndexWriter.getAndLock(); if(hits.totalHits > 0) { writer.updateDocument(uuidTerm, document); } else { @@ -378,7 +380,7 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer { Term uuidTerm = new Term(AbstractOlatDocument.RESOURCEURL_FIELD_NAME, resourceUrl); DirectoryReader reader = getReader(); IndexSearcher searcher = new IndexSearcher(reader); - TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10); + TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10); if(hits.totalHits > 0) { writer.updateDocument(uuidTerm, document); } else { diff --git a/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java b/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java index 40412c2749410499100e2c073239587bc78316c6..ae5069cd16090134f567cf2bd1573f031d13c4f6 100644 --- a/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java +++ b/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java @@ -55,6 +55,7 @@ import org.olat.core.logging.OLATRuntimeException; import org.olat.core.logging.OLATSecurityException; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.logging.activity.ThreadLocalUserActivityLoggerInstaller; import org.olat.core.util.Util; import org.olat.core.util.WebappHelper; import org.olat.core.util.i18n.I18nModule; @@ -144,6 +145,10 @@ public class ShibbolethDispatcher implements Dispatcher{ redirectToShibbolethRegistration(resp); return; } + if(ureq.getUserSession() != null) { + //re-init the activity logger + ThreadLocalUserActivityLoggerInstaller.initUserActivityLogger(req); + } int loginStatus = AuthHelper.doLogin(auth.getIdentity(), ShibbolethDispatcher.PROVIDER_SHIB, ureq); if (loginStatus != AuthHelper.LOGIN_OK) { if (loginStatus == AuthHelper.LOGIN_NOTAVAILABLE) {