use of org.olat.core.id.context.ContextEntry in project OpenOLAT by OpenOLAT.
the class StudentCoursesController method activate.
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if (entries == null || entries.isEmpty())
return;
ContextEntry ce = entries.get(0);
OLATResourceable ores = ce.getOLATResourceable();
if ("RepositoryEntry".equals(ores.getResourceableTypeName())) {
Long entryKey = ores.getResourceableId();
for (EfficiencyStatementEntry entry : model.getObjects()) {
if (entryKey.equals(entry.getCourse().getKey())) {
selectDetails(ureq, entry);
statementCtrl.activate(ureq, entries.subList(1, entries.size()), ce.getTransientState());
break;
}
}
}
}
use of org.olat.core.id.context.ContextEntry in project OpenOLAT by OpenOLAT.
the class LecturesToolController method activate.
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if (entries == null || entries.isEmpty())
return;
ContextEntry entry = entries.get(0);
String type = entry.getOLATResourceable().getResourceableTypeName();
if ("coach".equalsIgnoreCase(type)) {
if (segmentView != null) {
segmentView.select(teacherLink);
}
List<ContextEntry> subEntries = entries.subList(1, entries.size());
doOpenTeacherView(ureq).activate(ureq, subEntries, entry.getTransientState());
} else if ("attendee".equalsIgnoreCase(type)) {
if (segmentView != null) {
segmentView.select(participantLink);
}
List<ContextEntry> subEntries = entries.subList(1, entries.size());
doOpenParticipantView(ureq).activate(ureq, subEntries, entry.getTransientState());
}
}
use of org.olat.core.id.context.ContextEntry in project OpenOLAT by OpenOLAT.
the class WikiMainController method activate.
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if (entries == null || entries.isEmpty())
return;
Wiki wiki = getWiki();
if (wiki == null) {
return;
}
ContextEntry ce = entries.get(0);
String typ = ce.getOLATResourceable().getResourceableTypeName();
if ("az".equalsIgnoreCase(typ)) {
openAtoZPage(ureq, wiki);
} else if ("lastChanges".equalsIgnoreCase(typ)) {
openLastChangesPage(ureq, wiki);
} else if ("index".equalsIgnoreCase(typ)) {
WikiPage page = openIndexPage(ureq, wiki);
pageId = page.getPageId();
} else if ("Forum".equalsIgnoreCase(typ)) {
Long forumKey = ce.getOLATResourceable().getResourceableId();
for (WikiPage page : wiki.getAllPagesWithContent()) {
if (forumKey.longValue() == page.getForumKey()) {
if (page != null) {
this.pageId = page.getPageId();
}
updatePageContext(ureq, page);
OLATResourceable tabOres = OresHelper.createOLATResourceableInstance("tab", 1l);
ContextEntry tabCe = BusinessControlFactory.getInstance().createContextEntry(tabOres);
tabs.activate(ureq, Collections.singletonList(tabCe), null);
if (forumController != null && entries.size() > 1) {
List<ContextEntry> subEntries = entries.subList(1, entries.size());
forumController.activate(ureq, subEntries, null);
}
break;
}
}
} else {
String path = BusinessControlFactory.getInstance().getPath(ce);
if (path.startsWith("page=")) {
path = path.substring(5, path.length());
}
String activatePageId = WikiManager.generatePageId(FilterUtil.normalizeWikiLink(path));
if (wiki.pageExists(activatePageId)) {
WikiPage page = wiki.getPage(activatePageId, true);
if (page != null) {
this.pageId = page.getPageId();
}
updatePageContext(ureq, page);
if (entries.size() > 1) {
List<ContextEntry> subEntries = entries.subList(1, entries.size());
String subTyp = subEntries.get(0).getOLATResourceable().getResourceableTypeName();
if ("tab".equalsIgnoreCase(subTyp)) {
tabs.activate(ureq, subEntries, ce.getTransientState());
} else if ("message".equalsIgnoreCase(subTyp)) {
OLATResourceable tabOres = OresHelper.createOLATResourceableInstance("tab", 1l);
ContextEntry tabCe = BusinessControlFactory.getInstance().createContextEntry(tabOres);
tabs.activate(ureq, Collections.singletonList(tabCe), null);
forumController.activate(ureq, subEntries, null);
}
}
}
}
}
use of org.olat.core.id.context.ContextEntry in project OpenOLAT by OpenOLAT.
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.id.context.ContextEntry in project OpenOLAT by OpenOLAT.
the class DialogCourseNodeIndexer method checkAccess.
@Override
public boolean checkAccess(ContextEntry contextEntry, BusinessControl businessControl, Identity identity, Roles roles) {
ContextEntry ce = businessControl.popLauncherContextEntry();
if (ce == null || ce.getOLATResourceable() == null || ce.getOLATResourceable().getResourceableId() == null) {
// it's the node itself
return true;
}
OLATResourceable ores = ce.getOLATResourceable();
if (isLogDebugEnabled())
logDebug("OLATResourceable=" + ores);
if (ores.getResourceableTypeName().startsWith("path=")) {
// => it is a file element, typeName format: 'path=/test1/test2/readme.txt'
return true;
} else if (ores.getResourceableTypeName().equals(OresHelper.calculateTypeName(Message.class))) {
// it is message => check message access
Long resourceableId = ores.getResourceableId();
Message message = ForumManager.getInstance().loadMessage(resourceableId);
Message threadtop = message.getThreadtop();
if (threadtop == null) {
threadtop = message;
}
boolean isMessageHidden = Status.getStatus(threadtop.getStatusCode()).isHidden();
// TODO: (LD) fix this!!! - the contextEntry is not the right context for this check
if (isMessageHidden) {
boolean isOwner = BaseSecurityManager.getInstance().isIdentityPermittedOnResourceable(identity, Constants.PERMISSION_ACCESS, contextEntry.getOLATResourceable());
return isOwner;
}
return true;
} else {
logWarn("In DialogCourseNode unkown OLATResourceable=" + ores, null);
return false;
}
}
Aggregations