use of org.olat.modules.webFeed.Item in project OpenOLAT by OpenOLAT.
the class BlogEntryMediaHandler method createMedia.
@Override
public Media createMedia(String title, String description, Object mediaObject, String businessPath, Identity author) {
BlogEntryMedia entry = (BlogEntryMedia) mediaObject;
Item item = entry.getItem();
Media media = mediaDao.createMedia(title, description, "", BLOG_ENTRY_HANDLER, businessPath, null, 70, author);
File mediaDir = fileStorage.generateMediaSubDirectory(media);
String storagePath = fileStorage.getRelativePath(mediaDir);
media = mediaDao.updateStoragePath(media, storagePath, BlogArtefact.BLOG_FILE_NAME);
VFSContainer mediaContainer = fileStorage.getMediaContainer(media);
VFSContainer itemContainer = feedManager.getItemContainer(item);
FeedManager.getInstance().saveItemAsXML(item);
VFSManager.copyContent(itemContainer, mediaContainer);
FeedManager.getInstance().deleteItemXML(item);
return media;
}
use of org.olat.modules.webFeed.Item in project OpenOLAT by OpenOLAT.
the class LiveBlogArtefactHandler method getContent.
@Override
protected void getContent(AbstractArtefact artefact, StringBuilder sb, SearchResourceContext context, EPFrontendManager ePFManager) {
String businessPath = artefact.getBusinessPath();
if (StringHelper.containsNonWhitespace(businessPath)) {
manager = FeedManager.getInstance();
String oresId = businessPath.substring(LIVEBLOG.length(), businessPath.length() - 1);
OLATResourceable ores = OresHelper.createOLATResourceableInstance(BlogFileResource.TYPE_NAME, Long.parseLong(oresId));
Feed feed = manager.loadFeed(ores);
List<Item> publishedItems = manager.loadPublishedItems(feed);
for (Item item : publishedItems) {
OlatDocument itemDoc = new FeedItemDocument(item, context);
String content = itemDoc.getContent();
sb.append(content);
}
}
}
use of org.olat.modules.webFeed.Item in project OpenOLAT by OpenOLAT.
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;
}
use of org.olat.modules.webFeed.Item in project OpenOLAT by OpenOLAT.
the class ItemsController method createEditButtons.
/**
* Creates all necessary buttons for editing the feed's items
*
* @param feed
* the current feed object
*/
private void createEditButtons(UserRequest ureq, Feed feed) {
editButtons = new ArrayList<>();
deleteButtons = new ArrayList<>();
artefactLinks = new HashMap<>();
if (feed.isInternal()) {
addItemButton = LinkFactory.createButtonSmall("feed.add.item", vcItems, this);
addItemButton.setElementCssClass("o_sel_feed_item_new");
if (accessibleItems != null) {
for (Item item : accessibleItems) {
createButtonsForItem(ureq, feed, item);
}
}
} else if (feed.isExternal()) {
externalUrlButton = LinkFactory.createButtonSmall("feed.external.url", vcItems, this);
externalUrlButton.setElementCssClass("o_sel_feed_item_new");
} else if (feed.isUndefined()) {
// The feed is whether internal nor external:
// That is,
// - it has just been created,
// - all items have been removed or
// - the feed url of an external feed has been set empty.
// In such a case, the user can decide whether to make it internal
// or
// external.
makeInternalAndExternalButtons();
}
}
use of org.olat.modules.webFeed.Item in project OpenOLAT by OpenOLAT.
the class ItemsController method event.
/**
* @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
* org.olat.core.gui.components.Component,
* org.olat.core.gui.control.Event)
*/
@Override
protected void event(UserRequest ureq, Component source, Event event) {
// feed for this event and make sure the updated feed object is in the
// view
feedResource = feedManager.loadFeed(feedResource);
accessibleItems = feedManager.loadFilteredAndSortedItems(feedResource, callback, ureq.getIdentity());
if (source == addItemButton) {
currentItem = new ItemImpl(feedResource);
currentItem.setDraft(true);
currentItem.setAuthorKey(ureq.getIdentity().getKey());
// Generate new GUID for item, needed for media files that are
// stored relative to the GUID
currentItem.setGuid(CodeHelper.getGlobalForeverUniqueID());
itemFormCtr = uiFactory.createItemFormController(ureq, getWindowControl(), currentItem);
activateModalDialog(itemFormCtr, uiFactory.getTranslator().translate("feed.edit.item"));
} else if (editButtons != null && editButtons.contains(source)) {
currentItem = (Item) ((Link) source).getUserObject();
// meantime
if (accessibleItems.contains(currentItem)) {
lock = feedManager.acquireLock(feedResource, currentItem, getIdentity());
if (lock.isSuccess()) {
// reload to prevent stale object, then launch editor
currentItem = feedManager.loadItem(currentItem.getKey());
itemFormCtr = uiFactory.createItemFormController(ureq, getWindowControl(), currentItem);
activateModalDialog(itemFormCtr, uiFactory.getTranslator().translate("feed.edit.item"));
} else {
String fullName = userManager.getUserDisplayName(lock.getOwner());
showInfo("feed.item.is.being.edited.by", fullName);
}
} else {
showInfo("feed.item.is.being.edited.by", "unknown");
}
} else if (deleteButtons != null && deleteButtons.contains(source)) {
Item item = (Item) ((Link) source).getUserObject();
confirmDialogCtr = activateYesNoDialog(ureq, null, translate("feed.item.confirm.delete"), confirmDialogCtr);
confirmDialogCtr.setUserObject(item);
} else if (itemLinks != null && itemLinks.contains(source)) {
Item item = (Item) ((Link) source).getUserObject();
if (item != null) {
displayItemController(ureq, item);
}
} else if (source == externalUrlButton) {
externalUrlCtr = uiFactory.createExternalUrlController(ureq, getWindowControl(), feedResource);
activateModalDialog(externalUrlCtr, uiFactory.getTranslator().translate("feed.external.url"));
} else if (source == makeInternalButton) {
if (feedResource.isUndefined()) {
feedResource = feedManager.updateFeedMode(Boolean.FALSE, feedResource);
} else if (feedResource.isExternal()) {
externalUrlButton = LinkFactory.createButtonSmall("feed.external.url", vcItems, this);
externalUrlButton.setElementCssClass("o_sel_feed_item_new");
// Very special case: another user concurrently changed feed to
// external. Do nothing
vcItems.setDirty(true);
return;
}
// else nothing to do, already set to internal by a concurrent user
// Add temporary item and open edit dialog
addItemButton = LinkFactory.createButton("feed.add.item", vcItems, this);
addItemButton.setElementCssClass("o_sel_feed_item_new");
currentItem = new ItemImpl(feedResource);
currentItem.setDraft(true);
currentItem.setAuthorKey(ureq.getIdentity().getKey());
// Generate new GUID for item, needed for media files that are
// stored relative to the GUID
currentItem.setGuid(CodeHelper.getGlobalForeverUniqueID());
itemFormCtr = uiFactory.createItemFormController(ureq, getWindowControl(), currentItem);
activateModalDialog(itemFormCtr, uiFactory.getTranslator().translate("feed.edit.item"));
// do logging
ThreadLocalUserActivityLogger.log(FeedLoggingAction.FEED_EDIT, getClass(), LoggingResourceable.wrap(feedResource));
} else if (source == makeExternalButton) {
if (feedResource.isUndefined()) {
externalUrlButton = LinkFactory.createButtonSmall("feed.external.url", vcItems, this);
externalUrlButton.setElementCssClass("o_sel_feed_item_new");
feedResource = feedManager.updateFeedMode(Boolean.TRUE, feedResource);
vcItems.setDirty(true);
// Ask listening FeedMainController to open and handle a new
// external
// feed dialog.
fireEvent(ureq, HANDLE_NEW_EXTERNAL_FEED_DIALOG_EVENT);
// do logging
ThreadLocalUserActivityLogger.log(FeedLoggingAction.FEED_EDIT, getClass(), LoggingResourceable.wrap(feedResource));
}
} else if (source == olderItemsLink) {
helper.olderItems();
createEditButtons(ureq, feedResource);
createCommentsAndRatingsLinks(ureq, feedResource);
vcItems.setDirty(true);
} else if (source == newerItemsLink) {
helper.newerItems();
createEditButtons(ureq, feedResource);
createCommentsAndRatingsLinks(ureq, feedResource);
vcItems.setDirty(true);
} else if (source == startpageLink) {
helper.startpage();
createEditButtons(ureq, feedResource);
createCommentsAndRatingsLinks(ureq, feedResource);
vcItems.setDirty(true);
} else if (source instanceof Link) {
// if it's a link try to get attached identity and assume that user
// wants
// to see the users home page
Link userLink = (Link) source;
Object userObject = userLink.getUserObject();
if (userObject instanceof Identity) {
Identity chosenIdentity = (Identity) userObject;
String bPath = "[HomePage:" + chosenIdentity.getKey() + "]";
NewControllerFactory.getInstance().launch(bPath, ureq, getWindowControl());
}
}
// Check if someone else added an item, reload everything
List<Item> items = feedManager.loadFilteredAndSortedItems(feedResource, callback, ureq.getIdentity());
if (!isSameAllItems(items)) {
resetItems(ureq, feedResource);
}
}
Aggregations