Skip to content
Snippets Groups Projects
Commit 8e2d0b13 authored by srosse's avatar srosse
Browse files

OO-2478: show a message if a user want to jump to a "softly" deleted course,...

OO-2478: show a message if a user want to jump to a "softly" deleted course, don't send reminder of deleted course, show "deleted" course before "Members only"
parent f1e7a18b
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,7 @@ import org.olat.core.gui.control.navigation.SiteDefinition;
import org.olat.core.gui.control.navigation.SiteDefinitions;
import org.olat.core.gui.translator.Translator;
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.ContextEntryControllerCreator;
......@@ -94,6 +95,13 @@ public class CourseSiteContextEntryControllerCreator extends DefaultContextEntry
}
UserSession usess = ureq.getUserSession();
if(re.getAccess() == RepositoryEntry.DELETED) {
Roles roles = usess.getRoles();
if(!roles.isInstitutionalResourceManager() && !roles.isOLATAdmin()) {
return messageController(ureq, wControl, "repositoryentry.deleted");
}
}
if(usess.isInAssessmentModeProcess() && !usess.matchLockResource(re.getOlatResource())) {
return null;
}
......
......@@ -128,17 +128,18 @@ public class ReminderDAO {
}
/**
* Get all reminders of active repository entries.
* Get all reminders of active repository entries (status must be
* open and not "softly" deleted).
*
* @param startDate
* @return
* @return A list of reminders
*/
public List<Reminder> getReminders(Date startDate) {
StringBuilder sb = new StringBuilder();
sb.append("select rem from reminder rem")
.append(" inner join rem.entry entry")
.append(" where (rem.startDate is null or rem.startDate<=:startDate)")
.append(" and entry.statusCode=0");
.append(" and entry.statusCode=0 and entry.access>").append(RepositoryEntry.DELETED);
return dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Reminder.class)
......@@ -146,6 +147,12 @@ public class ReminderDAO {
.getResultList();
}
/**
* Get all reminders without restrictions.
*
* @param entry
* @return A list of remidners
*/
public List<Reminder> getReminders(RepositoryEntryRef entry) {
String q = "select rem from reminder rem inner join rem.entry entry where entry.key=:entryKey";
return dbInstance.getCurrentEntityManager()
......
......@@ -35,6 +35,9 @@ package org.olat.repository;
public class RepositoryEntryStatus {
public static final int REPOSITORY_STATUS_OPEN = 0;
/**
* Correspond to the "freeze" status
*/
public static final int REPOSITORY_STATUS_CLOSED = 2;
public static final int REPOSITORY_STATUS_UNPUBLISHED = 4;
......
......@@ -418,6 +418,7 @@ repository.admin.leave.label=Standardeinstellung f\u00FCr neue Kurse
repository.admin.leave.title=Verlassen von Kursen zulassen
repository.admin.lifecycle.title=Automatische Verwaltung des Lebenszyklus
repository.admin.title=Repository Einstellungen
repositoryentry.deleted=Diese Ressource wurde gel\u00F6scht und ist nicht mehr verf\u00FCgbar.
repositoryentry.not.existing=Diese Ressource ist nicht mehr verf\u00FCgbar.
resource.editor=Editor
resource.error.test.xml=Die Lernressource konnte nicht hinzugef\u00FCgt werden. Die qti.xml-Datei konnte nicht geparst werden.
......
......@@ -415,6 +415,7 @@ repository.admin.leave.label=Standard setting for new courses
repository.admin.leave.title=Allow leaving courses
repository.admin.lifecycle.title=Automatic Life-cycle management
repository.admin.title=Repository settings
repositoryentry.deleted=This resource was deleted and is no longer available.
repositoryentry.not.existing=This resource is no longer available.
resource.editor=Editor
resource.error.test.xml=Learning resource could not be added. The qti.xml file could not be parsed.
......
......@@ -49,12 +49,13 @@ public class AccessRenderer implements FlexiCellRenderer {
int row, FlexiTableComponent source, URLBuilder ubu, Translator translator) {
if(val instanceof RepositoryEntryLight) {
RepositoryEntryLight re = (RepositoryEntryLight)val;
if(re.isMembersOnly()) {
if(re.getAccess() == RepositoryEntry.DELETED) {
sb.append(translator.translate("table.header.access.deleted"));
} else if(re.isMembersOnly()) {
sb.append(translator.translate("table.header.access.membersonly"));
} else {
switch (re.getAccess()) {
case RepositoryEntry.DELETED: {
sb.append(translator.translate("table.header.access.deleted"));
break;
}
......
......@@ -35,6 +35,7 @@ import org.olat.modules.reminder.model.ReminderImpl;
import org.olat.modules.reminder.model.ReminderInfos;
import org.olat.modules.reminder.model.SentReminderImpl;
import org.olat.repository.RepositoryEntry;
import org.olat.repository.RepositoryService;
import org.olat.repository.manager.RepositoryEntryRelationDAO;
import org.olat.test.JunitTestHelper;
import org.olat.test.OlatTestCase;
......@@ -53,6 +54,8 @@ public class ReminderDAOTest extends OlatTestCase {
@Autowired
private ReminderDAO reminderDao;
@Autowired
private RepositoryService repositoryService;
@Autowired
private RepositoryEntryRelationDAO repositoryEntryRelationDao;
@Test
......@@ -140,6 +143,34 @@ public class ReminderDAOTest extends OlatTestCase {
}
Assert.assertTrue(found);
}
@Test
public void getReminders_repositoryEntry_softDeleted() {
//create and reminder and an identity
Identity creator = JunitTestHelper.createAndPersistIdentityAsRndUser("creator-rem-12");
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
Reminder reminder = reminderDao.createReminder(entry, creator);
reminder.setConfiguration("<rules></rules>");
reminder.setDescription("Reminder - 12");
reminder.setEmailBody("Hello, I'm deleted");
Reminder savedReminder = reminderDao.save(reminder);
Assert.assertNotNull(savedReminder);
dbInstance.commitAndCloseSession();
//check that we found the reminder
List<Reminder> loadedReminders = reminderDao.getReminders(new Date());
Assert.assertNotNull(loadedReminders);
Assert.assertTrue(loadedReminders.contains(savedReminder));
// delete the resource
repositoryService.deleteSoftly(entry, creator, false);
dbInstance.commitAndCloseSession();
// check we don't found the reminder
List<Reminder> reloadedReminders = reminderDao.getReminders(new Date());
Assert.assertNotNull(reloadedReminders);
Assert.assertFalse(reloadedReminders.contains(savedReminder));
}
@Test
public void getReminders_repositoryEntry() {
......
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