Skip to content
Snippets Groups Projects
Commit 575546d0 authored by srosse's avatar srosse
Browse files

Merge OpenOLAT 10.4 to OpenOLATpro default branch with 66f10fa76d19f09404b7c1da04e1361b7adf224e

parents 83c34c41 613e75d7
No related branches found
No related tags found
No related merge requests found
......@@ -622,7 +622,7 @@ public class WeeklyCalendarController extends FormBasicController implements Act
removeAsListenerAndDispose(editController);
KalendarRenderWrapper calendarWrapper = calendarEl.getCalendar(addEvent.getCalendarID());
List<KalendarRenderWrapper> copyCalendarWrappers = new ArrayList<KalendarRenderWrapper>(calendarWrappers);
List<KalendarRenderWrapper> copyCalendarWrappers = new ArrayList<>(calendarWrappers);
boolean isReadOnly = calendarWrapper == null ? true : calendarWrapper.getAccess() == KalendarRenderWrapper.ACCESS_READ_ONLY;
for(KalendarRenderWrapper copyCalendarWrapper:copyCalendarWrappers) {
......
#Thu Sep 03 11:24:43 CEST 2015
#Tue Mar 01 16:20:46 CET 2016
alert=Wybierz co najmniej jeden obiekt.
back=Wstecz
calendar.choose=Pobierz dat\u0119 z mini kalendarza
......
#Thu Apr 09 21:55:54 CEST 2015
#Tue Mar 01 16:31:01 CET 2016
add.reminder=Erinnerung erstellen
add.rule=+
course.role.all=Mitglieder
......@@ -17,30 +17,30 @@ error.course.node.found=Kurselement existiert nicht mehr
error.int=Ganzzahliger Wert erwartet
failed=Fehlgeschlagen
logs=Protokoll versendeter Erinnerungen
logs.intro=In der untenstehenden Liste sind alle versendeten Erinnerungen aufgeführt.
logs.intro=In der untenstehenden Liste sind alle versendeten Erinnerungen aufgef\u00FChrt.
month=Monate
new.reminder=Neue Erinnerung
passed=Bestanden
points=Punkte
reminder.def.body=<p>Liebe(r) $firstname $lastname</p><p>Sie haben sich in den Kurs "$coursename" eingetragen. Jetzt w\u00E4re ein guter Zeitpunkt diesen zu besuchen!</p><p>$courseurl</p><p>Viele Gr\u00FCsse</p>
reminder.def.body=<p>Liebe(r) $firstname $lastname</p><p>Sie haben sich in den Kurs "$coursename" eingetragen. Jetzt w\u00E4re ein guter Zeitpunkt diesen zu besuchen\!</p><p>$courseurl</p><p>Viele Gr\u00FCsse</p>
reminder.description=Beschreibung
reminder.id=ID
reminder.resend=Erinnerung wurde erfolgreich geschickt.
reminders=Erinnerungen
reminders.intro=Mit der Erinnerungsfunktion können Sie Erinnerungen in Form einer E-Mail an Ihre Teilnehmer versenden. Die E-Mails werden versendet sobald die von Ihnen hinterlegten Regeln zutreffen, z.B. ein Tag vor einem Test, wenn dieser noch nicht absolviert wurde. Wählen Sie "$\:add.reminder" um mit einer neuen Erinnerung zu Beginnen.
reminders.intro=Mit der Erinnerungsfunktion k\u00F6nnen Sie Erinnerungen in Form einer E-Mail an Ihre Teilnehmer versenden. Die E-Mails werden versendet sobald die von Ihnen hinterlegten Regeln zutreffen, z.B. ein Tag vor einem Test, wenn dieser noch nicht absolviert wurde. W\u00E4hlen Sie "$\:add.reminder" um mit einer neuen Erinnerung zu Beginnen.
resend=Erneut versenden
rule.assign.task=Termin: Aufgabe Zuweisung
rule.assign.task=Termin\: Aufgabe Zuweisung
rule.attempts=Versuche
rule.initial.attempts.date=Datum des ersten Versuchs
rule.passed=Bestanden
rule.score=Punkte
rule.submission.task=Termin: Aufgabe Dokumente abgeben
rule.submission.task=Termin\: Aufgabe Dokumente abgeben
rules.description=Wenn folgende Bedingungen erf\u00FCllt sind
send=Erinnerung jetzt schicken
send.reminder=Geschickte Erinnerungen
send.time.description={0} um {1}
send.time.description.label=Kurserinnerung
send.time.info=Hinweis: Erinnerungen werden für jeden Teilnehmer nur einmail versendet und zwar zum ersten Sendezeitpunkt, bei dem alle festgelegten Regeln zutreffen.
send.time.info=Hinweis\: Erinnerungen werden f\u00FCr jeden Teilnehmer nur einmal versendet und zwar zum ersten Sendezeitpunkt, bei dem alle festgelegten Regeln zutreffen.
show.sent=Geschickte Erinnerungen zeigen
table.header.actions=<i class\='o_icon o_icon_actions o_icon-lg'> </i>
table.header.creationDate=Erstellt am
......
......@@ -112,7 +112,14 @@ public class HomeCalendarManager implements PersonalCalendarManager {
SearchBusinessGroupParams groupParams = new SearchBusinessGroupParams(identity, true, true);
groupParams.addTools(CollaborationTools.TOOL_CALENDAR);
List<BusinessGroup> groups = businessGroupService.findBusinessGroups(groupParams, null, 0, -1);
Set<BusinessGroup> resourceSet = new HashSet<>();
for(BusinessGroup group:groups) {
if(resourceSet.contains(group)) {
continue;
} else {
resourceSet.add(group);
}
String calendarId = group.getKey().toString();
CalendarKey key = new CalendarKey(calendarId, CalendarManager.TYPE_GROUP);
CalendarUserConfiguration calendarConfig = configMap.get(key);
......@@ -127,8 +134,15 @@ public class HomeCalendarManager implements PersonalCalendarManager {
if(calendarModule.isEnableCourseElementCalendar() || calendarModule.isEnableCourseToolCalendar()) {
List<Object[]> resources = getCourses(identity);
Set<RepositoryEntry> resourceSet = new HashSet<>();
for(Object[] resource:resources) {
RepositoryEntry courseEntry = (RepositoryEntry)resource[0];
if(resourceSet.contains(courseEntry)) {
continue;
} else {
resourceSet.add(courseEntry);
}
String calendarId = courseEntry.getOlatResource().getResourceableId().toString();
CalendarKey key = new CalendarKey(calendarId, CalendarManager.TYPE_COURSE);
CalendarUserConfiguration calendarConfig = configMap.get(key);
......@@ -173,14 +187,18 @@ public class HomeCalendarManager implements PersonalCalendarManager {
Map<CalendarKey,CalendarUserConfiguration> configMap) {
// get the personal calendar
if(calendarModule.isEnablePersonalCalendar()) {
KalendarRenderWrapper calendarWrapper = calendarManager.getPersonalCalendar(identity);
calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE);
calendarWrapper.setPrivateEventsVisible(true);
CalendarUserConfiguration config = configMap.get(calendarWrapper.getCalendarKey());
if (config != null) {
calendarWrapper.setConfiguration(config);
try {
KalendarRenderWrapper calendarWrapper = calendarManager.getPersonalCalendar(identity);
calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE);
calendarWrapper.setPrivateEventsVisible(true);
CalendarUserConfiguration config = configMap.get(calendarWrapper.getCalendarKey());
if (config != null) {
calendarWrapper.setConfiguration(config);
}
calendars.add(calendarWrapper);
} catch (Exception e) {
log.error("Cannot read personal calendar of: " + identity, e);
}
calendars.add(calendarWrapper);
}
}
......@@ -248,6 +266,9 @@ public class HomeCalendarManager implements PersonalCalendarManager {
} catch (CorruptedCourseException e) {
OLATResource olatResource = courseEntry.getOlatResource();
log.error("Corrupted course: " + olatResource.getResourceableTypeName() + " :: " + courseResourceableID, null);
} catch (Exception e) {
OLATResource olatResource = courseEntry.getOlatResource();
log.error("Cannor read calendar of course: " + olatResource.getResourceableTypeName() + " :: " + courseResourceableID, null);
}
}
}
......@@ -317,27 +338,31 @@ public class HomeCalendarManager implements PersonalCalendarManager {
Map<Long,Long> groupKeyToAccess = CoreSpringFactory.getImpl(CollaborationManager.class).lookupCalendarAccess(groups);
for (BusinessGroup bGroup:groups) {
KalendarRenderWrapper groupCalendarWrapper = calendarManager.getGroupCalendar(bGroup);
groupCalendarWrapper.setPrivateEventsVisible(true);
// set calendar access
int iCalAccess = CollaborationTools.CALENDAR_ACCESS_OWNERS;
Long lCalAccess = groupKeyToAccess.get(bGroup.getKey());
if (lCalAccess != null) {
iCalAccess = lCalAccess.intValue();
}
if (iCalAccess == CollaborationTools.CALENDAR_ACCESS_OWNERS && !isOwner) {
groupCalendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_ONLY);
} else {
groupCalendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE);
}
CalendarUserConfiguration config = configMap.get(groupCalendarWrapper.getCalendarKey());
if (config != null) {
groupCalendarWrapper.setConfiguration(config);
}
if(isOwner || isParticipant) {
try {
KalendarRenderWrapper groupCalendarWrapper = calendarManager.getGroupCalendar(bGroup);
groupCalendarWrapper.setPrivateEventsVisible(true);
// set calendar access
int iCalAccess = CollaborationTools.CALENDAR_ACCESS_OWNERS;
Long lCalAccess = groupKeyToAccess.get(bGroup.getKey());
if (lCalAccess != null) {
iCalAccess = lCalAccess.intValue();
}
if (iCalAccess == CollaborationTools.CALENDAR_ACCESS_OWNERS && !isOwner) {
groupCalendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_ONLY);
} else {
groupCalendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE);
}
CalendarUserConfiguration config = configMap.get(groupCalendarWrapper.getCalendarKey());
if (config != null) {
groupCalendarWrapper.setConfiguration(config);
}
if(isOwner || isParticipant) {
groupCalendarWrapper.setPrivateEventsVisible(true);
}
calendars.add(groupCalendarWrapper);
} catch (Exception e) {
log.error("Cannot read calendar of group: " + bGroup, e);
}
calendars.add(groupCalendarWrapper);
}
}
......
......@@ -135,7 +135,7 @@ public interface QPoolService {
public ResultInfos<QuestionItemView> getSharedItemByResource(OLATResource resource, SearchQuestionItemParams params, int firstResult, int maxResults, SortKey... orderBy);
public List<QuestionItem2Resource> getSharedResourceInfosByItem(QuestionItem item);
//list
public QuestionItemCollection createCollection(Identity owner, String collectionName, List<QuestionItemShort> initialItems);
......@@ -153,6 +153,11 @@ public interface QPoolService {
public ResultInfos<QuestionItemView> getItemsOfCollection(QuestionItemCollection collection, SearchQuestionItemParams params, int firstResult, int maxResults, SortKey... orderBy);
/**
* Send the message to index this list of items.
* @param items
*/
public void index(List<? extends QuestionItemShort> items);
//study field admin
public List<TaxonomyLevel> getTaxonomyLevels();
......
......@@ -187,7 +187,18 @@ public class QuestionPoolServiceImpl implements QPoolService {
lifeIndexer.indexDocument(QItemDocument.TYPE, mergedItem.getKey());
return mergedItem;
}
@Override
public void index(List<? extends QuestionItemShort> items) {
if(items == null || items.isEmpty()) return;
List<Long> keys = new ArrayList<>();
for(QuestionItemShort item:items) {
keys.add(item.getKey());
}
lifeIndexer.indexDocument(QItemDocument.TYPE, keys);
}
@Override
public List<QuestionItem> copyItems(Identity owner, List<QuestionItemShort> itemsToCopy) {
List<QuestionItem> copies = new ArrayList<QuestionItem>();
......@@ -539,6 +550,7 @@ public class QuestionPoolServiceImpl implements QPoolService {
for(QuestionItemShort item:items) {
questionItemDao.share(item, resources, editable);
}
index(items);
}
@Override
......
......@@ -58,6 +58,7 @@ public class MarkedItemsSource extends DefaultItemsSource {
String businessPath = "[QuestionItem:" + item.getResourceableId() + "]";
markManager.setMark(item, identity, null, businessPath);
}
qpoolService.index(items);
return items.size();
}
......
......@@ -45,6 +45,7 @@ public class MyItemsSource extends DefaultItemsSource {
@Override
public int postImport(List<QuestionItem> items, boolean editable) {
qpoolService.index(items);
return items == null ? 0 : items.size();
}
......
......@@ -302,17 +302,16 @@ function b_changeLinkTargets() {
if (anchor.getAttribute('href')) {
var target = anchor.getAttribute('target');
var href = anchor.getAttribute("href");
if (href.indexOf("/auth/repo/go?rid=") != -1
|| (href.indexOf("/url/") != -1 && (
href.indexOf("/RepositoryEntry/") != -1
|| href.indexOf("/BusinessGroup/") != -1
|| href.indexOf("Site/", href.indexOf("/url/")) != -1
|| href.indexOf("/CatalogEntry/") != -1
|| href.indexOf("/Portal/") != -1
|| href.indexOf("/CatalogAdmin/") != -1
|| href.indexOf("/CoachSite/") != -1
|| href.indexOf("/GMCMenuTree/") != -1
)
if ((href.indexOf("/url/") != -1 || href.indexOf("/auth/") != -1) &&
(
href.indexOf("/repo/go?rid=") != -1
|| href.indexOf("/RepositoryEntry/") != -1
|| href.indexOf("/BusinessGroup/") != -1
|| href.indexOf("Site/") != -1
|| href.indexOf("/CatalogEntry/") != -1
|| href.indexOf("/Portal/") != -1
|| href.indexOf("/CatalogAdmin/") != -1
|| href.indexOf("/GMCMenuTree/") != -1
)
) {
// absolute links to repository entries have to by opened in the parent frame
......
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