use of org.olat.core.commons.services.notifications.model.SubscriptionListItem in project openolat by klemens.
the class PortfolioNotificationsHandler method pageModifiedItem.
private SubscriptionListItem pageModifiedItem(Long pageKey, String pageTitle, Date pageLastModified, Date partLastModified, String rootBusinessPath, Translator translator) {
String title = translator.translate("notifications.modified.page", new String[] { pageTitle });
Date date;
if (partLastModified != null && partLastModified.compareTo(pageLastModified) > 0) {
date = partLastModified;
} else {
date = pageLastModified;
}
String bPath = rootBusinessPath + "[Page:" + pageKey + "]";
String linkUrl = BusinessControlFactory.getInstance().getURLFromBusinessPathString(bPath);
SubscriptionListItem item = new SubscriptionListItem(title, linkUrl, bPath, date, "o_icon_pf_page");
item.setUserObject(pageKey);
return item;
}
use of org.olat.core.commons.services.notifications.model.SubscriptionListItem in project openolat by klemens.
the class EPNotificationManager method getPageSubscriptionListItem.
public List<SubscriptionListItem> getPageSubscriptionListItem(Long mapKey, String rootBusinessPath, Date compareDate, Translator translator) {
List<EPStructureElementNotification> notifications = getPageNotifications(mapKey, compareDate);
List<SubscriptionListItem> items = new ArrayList<SubscriptionListItem>();
for (EPNotification notification : notifications) {
SubscriptionListItem item = null;
String[] title = new String[] { StringHelper.escapeHtml(notification.getTitle()) };
if ("page".equals(notification.getType())) {
String bPath = rootBusinessPath + "[EPPage:" + notification.getPageKey() + "]";
String linkUrl = BusinessControlFactory.getInstance().getURLFromBusinessPathString(bPath);
item = new SubscriptionListItem(translator.translate("li.newpage", title), linkUrl, bPath, notification.getCreationDate(), "o_ep_icon_page");
item.setUserObject(notification.getPageKey());
} else {
String bPath = rootBusinessPath;
if (notification.getPageKey() != null) {
bPath = rootBusinessPath + "[EPPage:" + notification.getPageKey() + "]";
}
String linkUrl = BusinessControlFactory.getInstance().getURLFromBusinessPathString(bPath);
item = new SubscriptionListItem(translator.translate("li.newstruct", title), linkUrl, bPath, notification.getCreationDate(), "o_ep_icon_struct");
item.setUserObject(notification.getPageKey());
}
if (item != null) {
items.add(item);
}
}
return items;
}
use of org.olat.core.commons.services.notifications.model.SubscriptionListItem in project openolat by klemens.
the class EPNotificationsHandler method createSubscriptionInfo.
@Override
public SubscriptionInfo createSubscriptionInfo(Subscriber subscriber, Locale locale, Date compareDate) {
SubscriptionInfo si = null;
Publisher publisher = subscriber.getPublisher();
EPFrontendManager epMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
EPMapShort amap = epMgr.loadMapShortByResourceId(publisher.getResId());
if (isInkoveValid(amap, compareDate, publisher)) {
// init the helper;
String rootBusinessPath = "[EPDefaultMap:" + amap.getKey() + "]";
EPNotificationsHelper helper = new EPNotificationsHelper(rootBusinessPath, locale);
String resName = amap.getOlatResource().getResourceableTypeName();
si = new SubscriptionInfo(subscriber.getKey(), publisher.getType(), getTitleItemForMap(amap), null);
List<SubscriptionListItem> allItems = new ArrayList<SubscriptionListItem>(0);
// get subscriptionListItems according to map type
if ("EPDefaultMap".equals(resName) || "EPStructuredMapTemplate".equals(resName)) {
allItems = helper.getAllSubscrItemsDefault(compareDate, amap);
} else if ("EPStructuredMap".equals(resName)) {
allItems = helper.getAllSubscrItemsStructured(compareDate, amap);
}
for (SubscriptionListItem item : allItems) {
si.addSubscriptionListItem(item);
}
}
if (si == null) {
// no info, return empty
si = NotificationsManager.getInstance().getNoSubscriptionInfo();
}
return si;
}
use of org.olat.core.commons.services.notifications.model.SubscriptionListItem in project openolat by klemens.
the class WikiPageChangeOrCreateNotificationHandler method createSubscriptionInfo.
/**
* @see org.olat.core.commons.services.notifications.NotificationsHandler#createSubscriptionInfo(org.olat.core.commons.services.notifications.Subscriber,
* java.util.Locale, java.util.Date)
*/
@Override
public SubscriptionInfo createSubscriptionInfo(Subscriber subscriber, final Locale locale, Date compareDate) {
Publisher p = subscriber.getPublisher();
final Date latestNews = p.getLatestNewsDate();
Long resId = p.getResId();
SubscriptionInfo si;
final boolean debug = log.isDebug();
// there could be news for me, investigate deeper
if (debug)
log.debug("compareDate=" + compareDate + " ; latestNews=" + latestNews, null);
try {
if (NotificationsManager.getInstance().isPublisherValid(p) && compareDate.before(latestNews)) {
OLATResourceable ores = null;
if (p.getResName().equals(CourseModule.getCourseTypeName())) {
// resId = CourseResourceableId p.getSubidentifier() = wikiCourseNode.getIdent()
ICourse course = CourseFactory.loadCourse(resId);
if (!courseStatus(course)) {
return NotificationsManager.getInstance().getNoSubscriptionInfo();
}
CourseEnvironment cenv = course.getCourseEnvironment();
CourseNode courseNode = cenv.getRunStructure().getNode(p.getSubidentifier());
if (courseNode == null) {
// OLAT-3356 because removing wikicoursenodes was not propagated to
// disable subcriptions, we may end up here with a NULL wikicoursenode
// Best we can do here -> return noSubsInfo and clean up
NotificationsManager.getInstance().deactivate(p);
// return nothing available
return NotificationsManager.getInstance().getNoSubscriptionInfo();
}
ModuleConfiguration config = ((WikiCourseNode) courseNode).getModuleConfiguration();
RepositoryEntry re = WikiEditController.getWikiRepoReference(config, true);
resId = re.getOlatResource().getResourceableId();
if (debug)
log.debug("resId=" + resId, null);
ores = OresHelper.createOLATResourceableInstance(WikiResource.TYPE_NAME, resId);
businessControlString = p.getBusinessPath() + "[path=";
} else {
// resName = 'BusinessGroup' or 'FileResource.WIKI'
if (debug)
log.debug("p.getResName()=" + p.getResName(), null);
ores = OresHelper.createOLATResourceableInstance(p.getResName(), resId);
businessControlString = p.getBusinessPath() + "[path=";
}
Wiki wiki = WikiManager.getInstance().getOrLoadWiki(ores);
final List<WikiPage> pages = wiki.getPagesByDate();
Translator translator = Util.createPackageTranslator(WikiPageChangeOrCreateNotificationHandler.class, locale);
Translator forumTranslator = Util.createPackageTranslator(ForumNotificationsHandler.class, locale);
TitleItem title = getTitleItem(p, translator);
si = new SubscriptionInfo(subscriber.getKey(), p.getType(), title, null);
for (Iterator<WikiPage> it = pages.listIterator(); it.hasNext(); ) {
WikiPage element = it.next();
// do only show entries newer then the ones already seen
Date modDate = new Date(element.getModificationTime());
if (debug)
log.debug("modDate=" + modDate + " ; compareDate=" + compareDate, null);
if (modDate.after(compareDate)) {
if ((element.getPageName().startsWith("O_") || element.getPageName().startsWith(WikiPage.WIKI_MENU_PAGE)) && (element.getModifyAuthor() <= 0)) {
// theses pages are created sometimes automatically. Check if this is the case
continue;
}
// build Businesscontrol-Path
String businessPath = null;
String urlToSend = null;
if (p.getBusinessPath() != null) {
businessPath = businessControlString + element.getPageName() + "]";
urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(businessPath);
}
// string[] gets filled into translation key by adding {0...n} to
// the string
Identity ident = BaseSecurityManager.getInstance().loadIdentityByKey(Long.valueOf(element.getModifyAuthor()));
String desc = translator.translate("notifications.entry", new String[] { element.getPageName(), NotificationHelper.getFormatedName(ident) });
SubscriptionListItem subListItem = new SubscriptionListItem(desc, urlToSend, businessPath, modDate, CSS_CLASS_WIKI_PAGE_CHANGED_ICON);
si.addSubscriptionListItem(subListItem);
}
long forumKey = element.getForumKey();
List<Message> mInfos = ForumManager.getInstance().getNewMessageInfo(forumKey, compareDate);
for (Message mInfo : mInfos) {
String messageTitle = mInfo.getTitle();
Identity creator = mInfo.getCreator();
Identity modifier = mInfo.getModifier();
Date messageModDate = mInfo.getLastModified();
String name;
if (modifier != null) {
name = NotificationHelper.getFormatedName(modifier);
} else {
name = NotificationHelper.getFormatedName(creator);
}
final String descKey = "notifications.entry" + (mInfo.getCreationDate().equals(messageModDate) ? "" : ".modified");
final String desc = forumTranslator.translate(descKey, new String[] { messageTitle, name });
String urlToSend = null;
String businessPath = null;
if (p.getBusinessPath() != null) {
businessPath = businessControlString + element.getPageName() + "][message:" + mInfo.getKey().toString() + "]";
urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(businessPath);
}
SubscriptionListItem subListItem = new SubscriptionListItem(desc, urlToSend, businessPath, messageModDate, CSS_CLASS_WIKI_PAGE_CHANGED_ICON);
si.addSubscriptionListItem(subListItem);
}
}
} else {
// no news
si = NotificationsManager.getInstance().getNoSubscriptionInfo();
}
} catch (Exception e) {
log.error("Error creating wiki's notifications for subscriber: " + subscriber.getKey(), e);
checkPublisher(p);
si = NotificationsManager.getInstance().getNoSubscriptionInfo();
}
return si;
}
use of org.olat.core.commons.services.notifications.model.SubscriptionListItem in project openolat by klemens.
the class FeedNotifications method getItems.
public List<SubscriptionListItem> getItems() throws Exception {
try {
Publisher p = subscriber.getPublisher();
String data = p.getData();
Date latestNews = p.getLatestNewsDate();
if (notificationsManager.isPublisherValid(p) && compareDate.before(latestNews)) {
String resName = p.getResName();
Long resId = p.getResId();
Feed feed;
if ("CourseModule".equals(resName)) {
OLATResourceable ores = OresHelper.createOLATResourceableInstance(resName, Long.parseLong(data));
feed = feedManager.loadFeed(ores);
} else {
OLATResourceable ores = OresHelper.createOLATResourceableInstance(resName, resId);
feed = feedManager.loadFeed(ores);
}
List<Item> listItems = feedManager.loadItems(feed);
for (Item item : listItems) {
createSubscriptionItem(item, p);
}
}
} catch (Exception e) {
log.error("error in Feed notification", e);
}
return items;
}
Aggregations