Skip to content
Snippets Groups Projects
Commit 14d338f6 authored by srosse's avatar srosse
Browse files

Merge OpenOLAT 10.4 to OpenOLAT default branch with aa72fdcf026822199975be7fb12ac576da84ea1e

parents d5d1228a 12ccb53c
No related branches found
No related tags found
No related merge requests found
...@@ -71,6 +71,7 @@ import org.olat.group.BusinessGroupService; ...@@ -71,6 +71,7 @@ import org.olat.group.BusinessGroupService;
import org.olat.group.BusinessGroupShort; import org.olat.group.BusinessGroupShort;
import org.olat.group.model.BGRepositoryEntryRelation; import org.olat.group.model.BGRepositoryEntryRelation;
import org.olat.group.ui.main.CourseMembership; import org.olat.group.ui.main.CourseMembership;
import org.olat.group.ui.main.CourseMembershipComparator;
import org.olat.group.ui.main.EditSingleMembershipController; import org.olat.group.ui.main.EditSingleMembershipController;
import org.olat.group.ui.main.MemberPermissionChangeEvent; import org.olat.group.ui.main.MemberPermissionChangeEvent;
import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntry;
...@@ -101,6 +102,7 @@ public class CourseOverviewController extends BasicController { ...@@ -101,6 +102,7 @@ public class CourseOverviewController extends BasicController {
private final Link addAsOwner, addAsTutor, addAsParticipant; private final Link addAsOwner, addAsTutor, addAsParticipant;
private TableController courseListCtr; private TableController courseListCtr;
private MembershipDataModel tableDataModel; private MembershipDataModel tableDataModel;
private final CourseMembershipComparator membershipComparator = new CourseMembershipComparator();
private CloseableModalController cmc; private CloseableModalController cmc;
private DialogBoxController confirmSendMailBox; private DialogBoxController confirmSendMailBox;
...@@ -147,7 +149,19 @@ public class CourseOverviewController extends BasicController { ...@@ -147,7 +149,19 @@ public class CourseOverviewController extends BasicController {
courseListCtr.addColumnDescriptor(false, new DefaultColumnDescriptor(MSCols.externalRef.i18n(), MSCols.externalRef.ordinal(), courseListCtr.addColumnDescriptor(false, new DefaultColumnDescriptor(MSCols.externalRef.i18n(), MSCols.externalRef.ordinal(),
TABLE_ACTION_LAUNCH, getLocale())); TABLE_ACTION_LAUNCH, getLocale()));
CustomCellRenderer roleRenderer = new CourseRoleCellRenderer(); CustomCellRenderer roleRenderer = new CourseRoleCellRenderer();
courseListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor(MSCols.role.i18n(), MSCols.role.ordinal(), null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, roleRenderer)); courseListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor(MSCols.role.i18n(), MSCols.role.ordinal(), null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, roleRenderer){
@Override
public int compareTo(int rowa, int rowb) {
CourseMemberView cmv1 = (CourseMemberView)table.getTableDataModel().getValueAt(rowa,dataColumn);
CourseMemberView cmv2 = (CourseMemberView)table.getTableDataModel().getValueAt(rowb,dataColumn);
if(cmv1 == null || cmv1.getMembership() == null) {
return -1;
} else if(cmv2 == null || cmv2.getMembership() == null) {
return 1;
}
return membershipComparator.compare(cmv1.getMembership(), cmv2.getMembership());
}
});
courseListCtr.addColumnDescriptor(new DefaultColumnDescriptor(MSCols.firstTime.i18n(), MSCols.firstTime.ordinal(), null, getLocale())); courseListCtr.addColumnDescriptor(new DefaultColumnDescriptor(MSCols.firstTime.i18n(), MSCols.firstTime.ordinal(), null, getLocale()));
if(isLastVisitVisible) { if(isLastVisitVisible) {
courseListCtr.addColumnDescriptor(new DefaultColumnDescriptor(MSCols.lastTime.i18n(), MSCols.lastTime.ordinal(), null, getLocale())); courseListCtr.addColumnDescriptor(new DefaultColumnDescriptor(MSCols.lastTime.i18n(), MSCols.lastTime.ordinal(), null, getLocale()));
...@@ -806,4 +820,5 @@ public class CourseOverviewController extends BasicController { ...@@ -806,4 +820,5 @@ public class CourseOverviewController extends BasicController {
return !RepositoryEntryManagedFlag.isManaged(re, RepositoryEntryManagedFlag.membersmanagement); return !RepositoryEntryManagedFlag.isManaged(re, RepositoryEntryManagedFlag.membersmanagement);
} }
} }
} }
\ No newline at end of file
...@@ -87,6 +87,8 @@ ...@@ -87,6 +87,8 @@
<td> <td>
#if(!$isRestrictedEdit) #if(!$isRestrictedEdit)
<input type="text" name="points_q$count" value="$content.getPoints()" size="5" onchange="return setFormDirty('ofo_tab_fibitem')" onclick="return setFormDirty('ofo_tab_fibitem')"/> <input type="text" name="points_q$count" value="$content.getPoints()" size="5" onchange="return setFormDirty('ofo_tab_fibitem')" onclick="return setFormDirty('ofo_tab_fibitem')"/>
#else
$content.getPoints()
#end #end
</td> </td>
#end #end
......
...@@ -53,6 +53,7 @@ import org.olat.core.util.vfs.LocalFolderImpl; ...@@ -53,6 +53,7 @@ import org.olat.core.util.vfs.LocalFolderImpl;
import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSContainer;
import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSItem;
import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.VFSLeaf;
import org.olat.core.util.vfs.VFSManager;
import org.olat.course.assessment.manager.AssessmentModeDAO; import org.olat.course.assessment.manager.AssessmentModeDAO;
import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.assessment.manager.UserCourseInformationsManager;
import org.olat.course.certificate.CertificatesManager; import org.olat.course.certificate.CertificatesManager;
...@@ -227,10 +228,16 @@ public class RepositoryServiceImpl implements RepositoryService { ...@@ -227,10 +228,16 @@ public class RepositoryServiceImpl implements RepositoryService {
RepositoryHandler handler = RepositoryHandlerFactory.getInstance().getRepositoryHandler(sourceEntry); RepositoryHandler handler = RepositoryHandlerFactory.getInstance().getRepositoryHandler(sourceEntry);
copyEntry = handler.copy(author, sourceEntry, copyEntry); copyEntry = handler.copy(author, sourceEntry, copyEntry);
//copy the image //copy the image
RepositoryManager.getInstance().copyImage(sourceEntry, copyEntry); RepositoryManager.getInstance().copyImage(sourceEntry, copyEntry);
//copy media container
VFSContainer sourceMediaContainer = handler.getMediaContainer(sourceEntry);
if(sourceMediaContainer != null) {
VFSContainer targetMediaContainer = handler.getMediaContainer(copyEntry);
VFSManager.copyContent(sourceMediaContainer, targetMediaContainer);
}
ThreadLocalUserActivityLogger.log(LearningResourceLoggingAction.LEARNING_RESOURCE_CREATE, getClass(), ThreadLocalUserActivityLogger.log(LearningResourceLoggingAction.LEARNING_RESOURCE_CREATE, getClass(),
LoggingResourceable.wrap(copyEntry, OlatResourceableType.genRepoEntry)); LoggingResourceable.wrap(copyEntry, OlatResourceableType.genRepoEntry));
......
...@@ -40,8 +40,9 @@ import org.olat.home.HomeSite; ...@@ -40,8 +40,9 @@ import org.olat.home.HomeSite;
/** /**
* <h3>Description:</h3> * <h3>Description:</h3>
* <p> * <p>
* This class offers a way to launch the users homepage (alias visiting card) * This class offers a way to launch the users home page (alias visiting card), home site
* controller in a new tab * or the home of the logged in user in a new tab or (in the case of the logged in user)
* in its user's tools.
* <p> * <p>
* Initial Date: 21.08.2009 <br> * Initial Date: 21.08.2009 <br>
* *
...@@ -64,7 +65,7 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo ...@@ -64,7 +65,7 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo
*/ */
@Override @Override
public Controller createController(List<ContextEntry> ces, UserRequest ureq, WindowControl wControl) { public Controller createController(List<ContextEntry> ces, UserRequest ureq, WindowControl wControl) {
Identity id = getIdentity(ces.get(0)); Identity id = getIdentity(ces.get(0), ureq);
if (id == null) { if (id == null) {
return null; return null;
} }
...@@ -74,7 +75,7 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo ...@@ -74,7 +75,7 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo
@Override @Override
public String getSiteClassName(List<ContextEntry> ces, UserRequest ureq) { public String getSiteClassName(List<ContextEntry> ces, UserRequest ureq) {
Long resId = ces.get(0).getOLATResourceable().getResourceableId(); Long resId = ces.get(0).getOLATResourceable().getResourceableId();
if(resId != null && resId.equals(ureq.getIdentity().getKey())) { if(resId != null && (resId.longValue() == 0l || resId.equals(ureq.getIdentity().getKey()))) {
return HomeSite.class.getName(); return HomeSite.class.getName();
} }
return null; return null;
...@@ -85,7 +86,7 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo ...@@ -85,7 +86,7 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo
ContextEntry mainEntry, List<ContextEntry> entries) { ContextEntry mainEntry, List<ContextEntry> entries) {
Long resId = mainEntry.getOLATResourceable().getResourceableId(); Long resId = mainEntry.getOLATResourceable().getResourceableId();
if(resId != null && resId.equals(ureq.getIdentity().getKey())) { if(resId != null && (resId.longValue() == 0l || resId.equals(ureq.getIdentity().getKey()))) {
if(entries.isEmpty()) {//rewrite if(entries.isEmpty()) {//rewrite
OLATResourceable homeOres = OresHelper.createOLATResourceableInstance("HomeSite", resId); OLATResourceable homeOres = OresHelper.createOLATResourceableInstance("HomeSite", resId);
entries.add(BusinessControlFactory.getInstance().createContextEntry(homeOres)); entries.add(BusinessControlFactory.getInstance().createContextEntry(homeOres));
...@@ -102,14 +103,14 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo ...@@ -102,14 +103,14 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo
*/ */
@Override @Override
public String getTabName(ContextEntry ce, UserRequest ureq) { public String getTabName(ContextEntry ce, UserRequest ureq) {
Identity id = getIdentity(ce); Identity id = getIdentity(ce, ureq);
if (id == null) return null; if (id == null) return null;
return UserManagerImpl.getInstance().getUserDisplayName(id); return UserManagerImpl.getInstance().getUserDisplayName(id);
} }
@Override @Override
public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) { public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
return getIdentity(ce) != null; return getIdentity(ce, ureq) != null;
} }
/** /**
...@@ -118,17 +119,17 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo ...@@ -118,17 +119,17 @@ public class IdentityContextEntryControllerCreator extends DefaultContextEntryCo
* @param ce * @param ce
* @return the identity or NULL if not found * @return the identity or NULL if not found
*/ */
private Identity getIdentity(ContextEntry ce) { private Identity getIdentity(ContextEntry ce, UserRequest ureq) {
if(identity == null) { if(identity == null) {
OLATResourceable resource = ce.getOLATResourceable(); OLATResourceable resource = ce.getOLATResourceable();
Long key = resource.getResourceableId(); Long key = resource.getResourceableId();
if (key == null || key.equals(0)) { if (key == null || key.longValue() == 0l) {
log.error("Can not load identity with key::" + key); identity = ureq.getIdentity();
return null; } else {
} identity = BaseSecurityManager.getInstance().loadIdentityByKey(key);
identity = BaseSecurityManager.getInstance().loadIdentityByKey(key); if (identity == null) {
if (identity == null) { log.error("Can not load identity with key::" + key);
log.error("Can not load identity with key::" + key); }
} }
} }
return identity; return identity;
......
...@@ -89,9 +89,11 @@ public class FormatterTest { ...@@ -89,9 +89,11 @@ public class FormatterTest {
Assert.assertTrue(Formatter.formatEmoticonsAsImages("+ ").indexOf("<") == 0); Assert.assertTrue(Formatter.formatEmoticonsAsImages("+ ").indexOf("<") == 0);
Assert.assertTrue(Formatter.formatEmoticonsAsImages("- ").indexOf("<") == 0); Assert.assertTrue(Formatter.formatEmoticonsAsImages("- ").indexOf("<") == 0);
// text after +/- => should NOT render up or down icon // text after +/- => should NOT render up or down icon, is probably an enumeration
Assert.assertTrue(Formatter.formatEmoticonsAsImages("+trallala").indexOf("<") == -1); Assert.assertTrue(Formatter.formatEmoticonsAsImages("+trallala").indexOf("<") == -1);
Assert.assertTrue(Formatter.formatEmoticonsAsImages("-lustig").indexOf("<") == -1); Assert.assertTrue(Formatter.formatEmoticonsAsImages("-lustig").indexOf("<") == -1);
Assert.assertTrue(Formatter.formatEmoticonsAsImages("+ trallala").indexOf("<") == -1);
Assert.assertTrue(Formatter.formatEmoticonsAsImages("- lustig").indexOf("<") == -1);
// text before +/- => should NOT render up or down icon // text before +/- => should NOT render up or down icon
Assert.assertTrue(Formatter.formatEmoticonsAsImages("trallala-").indexOf("<") == -1); Assert.assertTrue(Formatter.formatEmoticonsAsImages("trallala-").indexOf("<") == -1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment