use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class ItemsController method createButtonsForItem.
private void createButtonsForItem(UserRequest ureq, Feed feed, Item item) {
boolean author = getIdentity().getKey().equals(item.getAuthorKey());
boolean edit = callback.mayEditItems() || (author && callback.mayEditOwnItems());
boolean delete = callback.mayDeleteItems() || (author && callback.mayDeleteOwnItems());
String guid = item.getGuid();
String editId = "feed.edit.item.".concat(guid);
Link editButton = LinkFactory.createCustomLink(editId, editId, "feed.edit.item", Link.BUTTON_SMALL, vcItems, this);
editButton.setElementCssClass("o_sel_feed_item_edit");
editButton.setEnabled(edit);
editButton.setVisible(edit);
String deleteId = "delete.".concat(guid);
Link deleteButton = LinkFactory.createCustomLink(deleteId, deleteId, "delete", Link.BUTTON_SMALL, vcItems, this);
deleteButton.setElementCssClass("o_sel_feed_item_delete");
deleteButton.setEnabled(delete);
deleteButton.setVisible(delete);
if (feedResource.isInternal() && getIdentity().getKey() != null && getIdentity().getKey().equals(item.getAuthorKey())) {
String businessPath = BusinessControlFactory.getInstance().getAsString(getWindowControl().getBusinessControl());
businessPath += "[item=" + item.getKey() + ":0]";
if (portfolioModule.isEnabled()) {
String name = "feed.artefact.item.".concat(guid);
BlogEntryMedia media = new BlogEntryMedia(feed, item);
MediaCollectorComponent collectorCmp = new MediaCollectorComponent(name, getWindowControl(), media, blogMediaHandler, businessPath);
vcItems.put(name, collectorCmp);
} else {
Controller artefactCtrl = EPUIFactory.createArtefactCollectWizzardController(ureq, getWindowControl(), feedResource, businessPath);
if (artefactCtrl != null) {
artefactLinks.put(item, artefactCtrl);
vcItems.put("feed.artefact.item.".concat(guid), artefactCtrl.getInitialComponent());
}
}
}
editButton.setUserObject(item);
deleteButton.setUserObject(item);
editButtons.add(editButton);
deleteButtons.add(deleteButton);
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class ItemsController method displayItemController.
/**
* Displays the item in the mainPanel of this controller.
*
* @param ureq
* @param item
*/
private ItemController displayItemController(UserRequest ureq, Item item) {
removeAsListenerAndDispose(itemCtr);
Link editButton = getButtonByUserObject(item, editButtons);
Link deleteButton = getButtonByUserObject(item, deleteButtons);
Controller artefactLink = getArtefactLinkByUserObject(item);
Feed feed = feedManager.loadFeed(feedResource);
item = feedManager.loadItem(item.getKey());
if (item != null) {
itemCtr = new ItemController(ureq, getWindowControl(), item, feed, helper, uiFactory, callback, editButton, deleteButton, artefactLink, displayConfig);
listenTo(itemCtr);
mainPanel.setContent(itemCtr.getInitialComponent());
}
return itemCtr;
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class ItemsController method event.
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
// reload 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 == cmc) {
if (event.equals(CloseableModalController.CLOSE_MODAL_EVENT)) {
removeAsListenerAndDispose(cmc);
cmc = null;
removeAsListenerAndDispose(itemFormCtr);
itemFormCtr = null;
// Check if this item has ever been added to the feed. If not,
// remove the temp dir
cleanupTmpItemMediaDir(currentItem);
// internally or subscribe to an external feed.
if (!feedManager.hasItems(feedResource)) {
feedResource = feedManager.updateFeedMode(null, feedResource);
makeInternalAndExternalButtons();
}
// release lock
feedManager.releaseLock(lock);
}
} else if (source == confirmDialogCtr && DialogBoxUIFactory.isYesEvent(event)) {
// The user confirmed that the item shall be deleted
Item item = (Item) ((DialogBoxController) source).getUserObject();
lock = feedManager.acquireLock(feedResource, item, getIdentity());
if (lock.isSuccess()) {
// remove the item from the naviCtr
naviCtr.remove(item);
// permanently remove item
feedResource = feedManager.deleteItem(item);
// remove delete and edit buttons of this item
for (Link deleteButton : deleteButtons) {
if (item.equals(deleteButton.getUserObject())) {
deleteButtons.remove(deleteButton);
break;
}
}
for (Link editButton : editButtons) {
if (item.equals(editButton.getUserObject())) {
editButtons.remove(editButton);
break;
}
}
// items manually or from an external source/feed.
if (!feedManager.hasItems(feedResource)) {
makeInternalAndExternalButtons();
// The subscription/feed url from the feed info is obsolete
fireEvent(ureq, ItemsController.FEED_INFO_IS_DIRTY_EVENT);
} else {
if (callback.mayEditItems() || callback.mayCreateItems()) {
createEditButtons(ureq, feedResource);
}
createCommentsAndRatingsLinks(ureq, feedResource);
}
vcItems.setDirty(true);
// in case we were in single item view, show all items
mainPanel.setContent(vcItems);
feedManager.releaseLock(lock);
lock = null;
// do logging
ThreadLocalUserActivityLogger.log(FeedLoggingAction.FEED_ITEM_DELETE, getClass(), LoggingResourceable.wrap(item));
} else {
String fullName = userManager.getUserDisplayName(lock.getOwner());
showInfo("feed.item.is.being.edited.by", fullName);
}
} else if (source == itemFormCtr) {
if (event.equals(Event.CHANGED_EVENT) || event.equals(Event.CANCELLED_EVENT)) {
if (event.equals(Event.CHANGED_EVENT)) {
FileElement mediaFile = currentItem.getMediaFile();
if (feedManager.getItemContainer(currentItem) == null) {
// Ups, deleted in the meantime by someone else
// remove the item from the naviCtr
naviCtr.remove(currentItem);
} else {
if (!accessibleItems.contains(currentItem)) {
// Add the modified item if it is not part of the
// feed
feedResource = feedManager.createItem(feedResource, currentItem, mediaFile);
if (feedResource != null) {
createButtonsForItem(ureq, feedResource, currentItem);
createItemLink(currentItem);
// Add date component
String guid = currentItem.getGuid();
if (currentItem.getDate() != null) {
DateComponentFactory.createDateComponentWithYear("date." + guid, currentItem.getDate(), vcItems);
}
// Add comments and rating
createCommentsAndRatingsLink(ureq, feedResource, currentItem);
// add it to the navigation controller
naviCtr.add(currentItem);
accessibleItems = feedManager.loadFilteredAndSortedItems(feedResource, callback, ureq.getIdentity());
if (accessibleItems != null && accessibleItems.size() == 1) {
// First item added, show feed url (for
// subscription)
fireEvent(ureq, ItemsController.FEED_INFO_IS_DIRTY_EVENT);
// Set the base URI of the feed for the
// current user. All users
// have unique URIs.
helper.setURIs(currentItem.getFeed());
}
}
} else {
// Write item file
currentItem = feedManager.updateItem(currentItem, mediaFile);
if (itemCtr != null) {
displayItemController(ureq, currentItem);
}
ThreadLocalUserActivityLogger.log(FeedLoggingAction.FEED_ITEM_EDIT, getClass(), LoggingResourceable.wrap(currentItem));
}
}
vcItems.setDirty(true);
// if the current item is displayed, update the view
if (itemCtr != null) {
itemCtr.getInitialComponent().setDirty(true);
}
} else if (event.equals(Event.CANCELLED_EVENT)) {
// Check if this item has ever been added to the feed. If
// not, remove the temp dir
cleanupTmpItemMediaDir(currentItem);
// internally or subscribe to an external feed.
if (!feedManager.hasItems(feedResource)) {
feedResource = feedManager.updateFeedMode(null, feedResource);
makeInternalAndExternalButtons();
}
}
// release the lock
feedManager.releaseLock(lock);
// Dispose the cmc and the podcastFormCtr.
cmc.deactivate();
removeAsListenerAndDispose(cmc);
cmc = null;
removeAsListenerAndDispose(itemFormCtr);
itemFormCtr = null;
}
} else if (source == externalUrlCtr) {
if (event.equals(Event.CHANGED_EVENT)) {
String externalUrl = externalUrlCtr.getExternalFeedUrlEl();
feedManager.updateExternalFeedUrl(feedResource, externalUrl);
} else if (event.equals(Event.CHANGED_EVENT)) {
// nothing to do
}
cmc.deactivate();
removeAsListenerAndDispose(cmc);
cmc = null;
removeAsListenerAndDispose(externalUrlCtr);
externalUrlCtr = null;
} else if (source == naviCtr && event instanceof NavigationEvent) {
List<? extends Dated> selItems = ((NavigationEvent) event).getSelectedItems();
List<Item> items = new ArrayList<>();
for (Dated item : selItems) {
if (item instanceof Item) {
items.add((Item) item);
}
}
if (callback.mayEditItems() || callback.mayCreateItems()) {
createEditButtons(ureq, feedResource);
}
createCommentsAndRatingsLinks(ureq, feedResource);
vcItems.setDirty(true);
mainPanel.setContent(vcItems);
} else if (source == itemCtr) {
if (event == Event.BACK_EVENT) {
mainPanel.setContent(vcItems);
removeAsListenerAndDispose(itemCtr);
itemCtr = null;
}
} else if (source instanceof UserCommentsAndRatingsController) {
UserCommentsAndRatingsController commentsRatingsCtr = (UserCommentsAndRatingsController) source;
if (event == UserCommentsAndRatingsController.EVENT_COMMENT_LINK_CLICKED) {
// go to details page
Item item = (Item) commentsRatingsCtr.getUserObject();
if (item != null) {
ItemController myItemCtr = displayItemController(ureq, item);
List<ContextEntry> entries = BusinessControlFactory.getInstance().createCEListFromResourceType(ItemController.ACTIVATION_KEY_COMMENTS);
myItemCtr.activate(ureq, entries, null);
}
}
}
// reload everything
if (feedResource != null) {
resetItems(ureq, feedResource);
}
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class EPMultiplePageController method event.
@Override
protected void event(UserRequest ureq, Component source, Event event) {
if (source instanceof Link) {
Link link = (Link) source;
int pageNum = PAGENUM_TOC;
try {
pageNum = Integer.parseInt(link.getUserObject().toString());
} catch (NumberFormatException nfe) {
// somehow the link has a invalid pageNum, display the TOC
}
setAndInitActualPage(ureq, pageNum, false);
}
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class EPMultiplePageController method init.
/**
* @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,
* org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
*/
protected void init(UserRequest ureq) {
if (pageList != null && pageList.size() != 0) {
// create toc link
tocLink = LinkFactory.createLink("toc", vC, this);
tocLink.setDomReplacementWrapperRequired(false);
tocLink.setUserObject(PAGENUM_TOC);
// create changelog link
changelogLink = LinkFactory.createLink("changelog", vC, this);
changelogLink.setDomReplacementWrapperRequired(false);
changelogLink.setUserObject(PAGENUM_CL);
int i = 1;
List<Link> pageLinkList = new ArrayList<Link>();
for (PageTab page : pageList) {
String pageTitle = StringHelper.escapeHtml(page.getTitle());
String shortPageTitle = Formatter.truncate(pageTitle, 20);
Link pageLink = LinkFactory.createCustomLink("pageLink" + i, "pageLink" + i, shortPageTitle, Link.LINK + Link.NONTRANSLATED, vC, this);
pageLink.setDomReplacementWrapperRequired(false);
pageLink.setUserObject(i - 1);
pageLink.setTooltip(pageTitle);
pageLinkList.add(pageLink);
i++;
}
vC.contextPut("pageLinkList", pageLinkList);
setAndInitActualPage(ureq, PAGENUM_TOC, false);
}
}
Aggregations