Search in sources :

Example 76 with Item

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;
}
Also used : Item(org.olat.modules.webFeed.Item) VFSContainer(org.olat.core.util.vfs.VFSContainer) Media(org.olat.modules.portfolio.Media) File(java.io.File)

Example 77 with Item

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);
        }
    }
}
Also used : Item(org.olat.modules.webFeed.Item) OlatDocument(org.olat.search.model.OlatDocument) FeedItemDocument(org.olat.modules.webFeed.search.document.FeedItemDocument) OLATResourceable(org.olat.core.id.OLATResourceable) Feed(org.olat.modules.webFeed.Feed)

Example 78 with Item

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;
}
Also used : Item(org.olat.modules.webFeed.Item) SubscriptionListItem(org.olat.core.commons.services.notifications.model.SubscriptionListItem) OLATResourceable(org.olat.core.id.OLATResourceable) Publisher(org.olat.core.commons.services.notifications.Publisher) Date(java.util.Date) Feed(org.olat.modules.webFeed.Feed)

Example 79 with Item

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();
    }
}
Also used : Item(org.olat.modules.webFeed.Item)

Example 80 with Item

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);
    }
}
Also used : Item(org.olat.modules.webFeed.Item) ItemImpl(org.olat.modules.webFeed.model.ItemImpl) Identity(org.olat.core.id.Identity) Link(org.olat.core.gui.components.link.Link)

Aggregations

Item (org.olat.modules.webFeed.Item)142 Test (org.junit.Test)98 Feed (org.olat.modules.webFeed.Feed)98 ItemImpl (org.olat.modules.webFeed.model.ItemImpl)64 OLATResource (org.olat.resource.OLATResource)44 BlogFileResource (org.olat.fileresource.types.BlogFileResource)38 FeedImpl (org.olat.modules.webFeed.model.FeedImpl)38 VFSContainer (org.olat.core.util.vfs.VFSContainer)26 Date (java.util.Date)16 VFSItem (org.olat.core.util.vfs.VFSItem)14 ArrayList (java.util.ArrayList)8 OLATResourceable (org.olat.core.id.OLATResourceable)8 RepositoryEntry (org.olat.repository.RepositoryEntry)8 SyndFeed (com.rometools.rome.feed.synd.SyndFeed)6 LocalDate (java.time.LocalDate)6 RSSFeed (org.olat.modules.webFeed.RSSFeed)6 FeedItemDocument (org.olat.modules.webFeed.search.document.FeedItemDocument)6 OlatDocument (org.olat.search.model.OlatDocument)6 SyndContent (com.rometools.rome.feed.synd.SyndContent)4 SyndEnclosure (com.rometools.rome.feed.synd.SyndEnclosure)4