Search in sources :

Example 51 with Link

use of org.olat.core.gui.components.link.Link in project OpenOLAT by OpenOLAT.

the class ProjectBrokerPeekViewRunController 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) {
    if (source instanceof Link) {
        Link projectLink = (Link) source;
        String projectId = (String) projectLink.getUserObject();
        if (projectId == null) {
            fireEvent(ureq, new OlatCmdEvent(OlatCmdEvent.GOTONODE_CMD, courseNodeIdent));
        } else {
            fireEvent(ureq, new OlatCmdEvent(OlatCmdEvent.GOTONODE_CMD, courseNodeIdent + "/" + projectId));
        }
    }
}
Also used : OlatCmdEvent(org.olat.core.gui.components.htmlsite.OlatCmdEvent) Link(org.olat.core.gui.components.link.Link)

Example 52 with Link

use of org.olat.core.gui.components.link.Link in project OpenOLAT by OpenOLAT.

the class VideoPosterSelectionForm method event.

@Override
protected void event(UserRequest ureq, Component source, Event event) {
    if (source instanceof Link) {
        Link button = (Link) source;
        VFSItem posterFile = tmpContainer.resolve((String) button.getUserObject());
        if (posterFile instanceof VFSLeaf) {
            fireEvent(ureq, new FolderEvent(FolderEvent.UPLOAD_EVENT, posterFile));
        }
    }
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) VFSItem(org.olat.core.util.vfs.VFSItem) FolderEvent(org.olat.core.commons.modules.bc.FolderEvent) Link(org.olat.core.gui.components.link.Link)

Example 53 with Link

use of org.olat.core.gui.components.link.Link in project OpenOLAT by OpenOLAT.

the class CorrectionAssessmentItemListController method formInnerEvent.

@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
    if (tableEl == source) {
        if (event instanceof SelectionEvent) {
            SelectionEvent se = (SelectionEvent) event;
            String cmd = se.getCommand();
            CorrectionAssessmentItemRow row = tableModel.getObject(se.getIndex());
            if ("select".equals(cmd)) {
                // accept all
                doSelect(ureq, row, r -> true);
            } else if ("answered".equals(cmd)) {
                // accept all
                doSelect(ureq, row, new ResponsedPredicate(row, true));
            } else if ("notAnswered".equals(cmd)) {
                // accept all
                doSelect(ureq, row, new ResponsedPredicate(row, false));
            } else if ("autoCorrected".equals(cmd)) {
                doSelect(ureq, row, entry -> !row.isManualCorrection() && entry.getManualScore() == null);
            } else if ("corrected".equals(cmd)) {
                doSelect(ureq, row, entry -> entry.getManualScore() != null);
            } else if ("notCorrected".equals(cmd)) {
                doSelect(ureq, row, entry -> row.isManualCorrection() && entry.getManualScore() == null);
            } else if ("toReview".equals(cmd)) {
                doSelect(ureq, row, AssessmentItemListEntry::isToReview);
            }
        }
    } else if (saveTestsButton == source) {
        doConfirmSaveTests(ureq);
    } else if (source instanceof FormLink) {
        FormLink link = (FormLink) source;
        if ("tools".equals(link.getCmd())) {
            doOpenTools(ureq, (CorrectionAssessmentItemRow) link.getUserObject(), link);
        }
    }
    super.formInnerEvent(ureq, source, event);
}
Also used : FlexiTableElement(org.olat.core.gui.components.form.flexible.elements.FlexiTableElement) Util(org.olat.core.util.Util) AssessmentItemSession(org.olat.ims.qti21.AssessmentItemSession) ItemSessionKey(org.olat.ims.qti21.ui.assessment.model.ItemSessionKey) DefaultFlexiColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel) Autowired(org.springframework.beans.factory.annotation.Autowired) AssessmentItemCorrection(org.olat.ims.qti21.ui.assessment.model.AssessmentItemCorrection) OLATResourceable(org.olat.core.id.OLATResourceable) BigDecimal(java.math.BigDecimal) OresHelper(org.olat.core.util.resource.OresHelper) Map(java.util.Map) VelocityContainer(org.olat.core.gui.components.velocity.VelocityContainer) QuestionTypeFlexiCellRenderer(org.olat.ims.qti21.ui.assessment.components.QuestionTypeFlexiCellRenderer) QTI21Module(org.olat.ims.qti21.QTI21Module) FlexiTableColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel) CloseableModalController(org.olat.core.gui.control.generic.closablewrapper.CloseableModalController) ManifestMetadataBuilder(org.olat.ims.qti21.model.xml.ManifestMetadataBuilder) Translator(org.olat.core.gui.translator.Translator) Predicate(java.util.function.Predicate) WindowControl(org.olat.core.gui.control.WindowControl) PopEvent(org.olat.core.gui.components.stack.PopEvent) Component(org.olat.core.gui.components.Component) LinkFactory(org.olat.core.gui.components.link.LinkFactory) AssessmentEntryStatus(org.olat.modules.assessment.model.AssessmentEntryStatus) QTI21Service(org.olat.ims.qti21.QTI21Service) SelectionEvent(org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent) BasicController(org.olat.core.gui.control.controller.BasicController) CorrectionAssessmentItemRow(org.olat.ims.qti21.ui.assessment.model.CorrectionAssessmentItemRow) List(java.util.List) FormLink(org.olat.core.gui.components.form.flexible.elements.FormLink) CorrectedFlexiCellRenderer(org.olat.ims.qti21.ui.assessment.components.CorrectedFlexiCellRenderer) Identity(org.olat.core.id.Identity) AssessmentTestComposerController(org.olat.ims.qti21.ui.editor.AssessmentTestComposerController) CloseableCalloutWindowController(org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController) TestPlanNode(uk.ac.ed.ph.jqtiplus.state.TestPlanNode) SelectAssessmentItemEvent(org.olat.ims.qti21.ui.assessment.event.SelectAssessmentItemEvent) TooledStackedPanel(org.olat.core.gui.components.stack.TooledStackedPanel) FormEvent(org.olat.core.gui.components.form.flexible.impl.FormEvent) ToReviewFlexiCellRenderer(org.olat.ims.qti21.ui.assessment.components.ToReviewFlexiCellRenderer) ResolvedAssessmentItem(uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem) HashMap(java.util.HashMap) ItemSessionState(uk.ac.ed.ph.jqtiplus.state.ItemSessionState) FormItem(org.olat.core.gui.components.form.flexible.FormItem) ResolvedAssessmentTest(uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest) ArrayList(java.util.ArrayList) AssessmentTest(uk.ac.ed.ph.jqtiplus.node.test.AssessmentTest) Event(org.olat.core.gui.control.Event) FormBasicController(org.olat.core.gui.components.form.flexible.impl.FormBasicController) FormItemContainer(org.olat.core.gui.components.form.flexible.FormItemContainer) AssessmentItem(uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem) FlexiTableDataModelFactory(org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory) AssessmentTestSession(org.olat.ims.qti21.AssessmentTestSession) CorrectionWorkflow(org.olat.ims.qti21.QTI21Module.CorrectionWorkflow) AssessmentItemListEntry(org.olat.ims.qti21.ui.assessment.model.AssessmentItemListEntry) TestSessionState(uk.ac.ed.ph.jqtiplus.state.TestSessionState) Link(org.olat.core.gui.components.link.Link) AssessmentItemRef(uk.ac.ed.ph.jqtiplus.node.test.AssessmentItemRef) TestPlanNodeKey(uk.ac.ed.ph.jqtiplus.state.TestPlanNodeKey) CompleteAssessmentTestSessionEvent(org.olat.modules.assessment.ui.event.CompleteAssessmentTestSessionEvent) ItemCols(org.olat.ims.qti21.ui.assessment.CorrectionAssessmentItemTableModel.ItemCols) AutoCorrectedFlexiCellRenderer(org.olat.ims.qti21.ui.assessment.components.AutoCorrectedFlexiCellRenderer) Controller(org.olat.core.gui.control.Controller) UserManager(org.olat.user.UserManager) NotCorrectedFlexiCellRenderer(org.olat.ims.qti21.ui.assessment.components.NotCorrectedFlexiCellRenderer) LockResult(org.olat.core.util.coordinate.LockResult) UserRequest(org.olat.core.gui.UserRequest) CoordinatorManager(org.olat.core.util.coordinate.CoordinatorManager) CorrectionAssessmentItemRow(org.olat.ims.qti21.ui.assessment.model.CorrectionAssessmentItemRow) AssessmentItemListEntry(org.olat.ims.qti21.ui.assessment.model.AssessmentItemListEntry) SelectionEvent(org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent) FormLink(org.olat.core.gui.components.form.flexible.elements.FormLink)

Example 54 with Link

use of org.olat.core.gui.components.link.Link in project OpenOLAT by OpenOLAT.

the class EPMultipleMapController method initOrUpdateMaps.

/**
 */
private void initOrUpdateMaps(UserRequest ureq) {
    if (isLogDebugEnabled()) {
        start = System.currentTimeMillis();
        logDebug("start loading map overview at : ", String.valueOf(start));
    }
    List<PortfolioStructure> allUsersStruct = getUsersStructsToDisplay();
    userMaps = new ArrayList<PortfolioStructureMap>();
    if (allUsersStruct.isEmpty()) {
        vC.contextPut("noMaps", true);
        return;
    } else
        vC.contextRemove("noMaps");
    // remove forward link (maybe it's not needed (last page) )
    if (forwardLink != null)
        vC.remove(forwardLink);
    // now add paging-components if necessary and wanted
    int elementCount = ePFMgr.countStructureElementsFromOthers(getIdentity(), mapOwner, ElementType.DEFAULT_MAP);
    if (pagingAvailable && elementCount > ITEMS_PER_PAGE) {
        vC.contextPut("showPaging", true);
        int additionalPage = ((elementCount % ITEMS_PER_PAGE) > 0) ? 1 : 0;
        int pageCount = (elementCount / ITEMS_PER_PAGE) + additionalPage;
        List<Component> pagingLinks = new ArrayList<Component>();
        for (int i = 1; i < pageCount + 1; i++) {
            Link pageLink = LinkFactory.createCustomLink(PAGING_LINK_PREFIX + i, "switchPage", String.valueOf(i), Link.NONTRANSLATED, vC, this);
            pageLink.setUserObject(new Integer(i));
            pagingLinks.add(pageLink);
            if (i == currentPageNum) {
                pageLink.setEnabled(false);
            }
        }
        vC.contextPut("pageLinks", pagingLinks);
        if (currentPageNum < pageCount) {
            forwardLink = LinkFactory.createCustomLink("forwardLink", "pagingFWD", "table.forward", Link.LINK, vC, this);
            forwardLink.setIconRightCSS("o_icon o_icon_next_page");
        }
    }
    // now display the maps
    List<String> artAmount = new ArrayList<String>(userMaps.size());
    List<Integer> childAmount = new ArrayList<Integer>(userMaps.size());
    List<String> mapStyles = new ArrayList<String>(userMaps.size());
    List<Date> deadLines = new ArrayList<Date>(userMaps.size());
    List<String> restriStats = new ArrayList<String>(userMaps.size());
    List<String> owners = new ArrayList<String>(userMaps.size());
    List<String> amounts = new ArrayList<String>(userMaps.size());
    int i = 1;
    for (PortfolioStructure portfolioStructure : allUsersStruct) {
        if (portfolioStructure.getRoot() == null) {
            // only show maps
            PortfolioStructureMap map = (PortfolioStructureMap) portfolioStructure;
            EPSecurityCallback secCallback = EPSecurityCallbackFactory.getSecurityCallback(ureq, map, ePFMgr);
            userMaps.add(map);
            Link vLink = LinkFactory.createCustomLink(VIEW_LINK_PREFIX + i, "viewMap" + map.getResourceableId(), "view.map", Link.LINK, vC, this);
            vLink.setUserObject(map);
            vLink.setElementCssClass("o_sel_ep_open_map");
            vLink.setIconRightCSS("o_icon o_icon-fw o_icon_start");
            // can always try to delete your own map, but exercise only if the course was deleted
            // remove as update could require hiding it
            vC.remove(vC.getComponent(DELETE_LINK_PREFIX + i));
            // can always try to delete your own map, but exercise only if the course was deleted
            final boolean myMaps = (option.equals(EPMapRunViewOption.MY_DEFAULTS_MAPS) || option.equals(EPMapRunViewOption.MY_EXERCISES_MAPS));
            boolean addDeleteLink = myMaps;
            if ((map instanceof EPStructuredMap) && (((EPStructuredMap) map).getReturnDate() != null)) {
                // it's a portfolio-task that was already handed in, so do not display delete-link
                addDeleteLink = false;
            }
            if (addDeleteLink) {
                final Link dLink = LinkFactory.createCustomLink(DELETE_LINK_PREFIX + i, "delMap" + map.getResourceableId(), "delete.map", Link.LINK, vC, this);
                dLink.setIconLeftCSS("o_icon o_icon-fw o_icon_delete_item");
                dLink.setUserObject(map);
            }
            Link cLink = LinkFactory.createCustomLink(COPY_LINK_PREFIX + i, "copyMap" + map.getResourceableId(), "copy.map", Link.LINK, vC, this);
            cLink.setIconLeftCSS("o_icon o_icon_copy");
            cLink.setUserObject(map);
            // its not allowed to copy maps from a portfolio-task
            if (map instanceof EPStructuredMap) {
                cLink.setVisible(false);
            }
            // remove as update could require hiding it
            vC.remove(vC.getComponent(SHARE_LINK_PREFIX + i));
            if (myMaps && secCallback.canShareMap()) {
                Link shareLink = LinkFactory.createCustomLink(SHARE_LINK_PREFIX + i, "shareMap" + map.getResourceableId(), "map.share", Link.LINK, vC, this);
                shareLink.setIconLeftCSS("o_icon o_icon-fw o_icon_share");
                shareLink.setUserObject(map);
                boolean shared = ePFMgr.isMapShared(map);
                if (shared || (map instanceof EPStructuredMap && ((EPStructuredMap) map).getTargetResource() != null)) {
                    shareLink.setCustomDisplayText(translate("map.share.shared"));
                }
            }
            if (isLogDebugEnabled()) {
                logDebug("  in loop : got share state at: ", String.valueOf(System.currentTimeMillis()));
            }
            // get deadline + link to course
            if (map instanceof EPStructuredMap) {
                EPStructuredMap structMap = (EPStructuredMap) map;
                Date deadLine = structMap.getDeadLine();
                deadLines.add(deadLine);
                EPTargetResource resource = structMap.getTargetResource();
                RepositoryEntry repoEntry = RepositoryManager.getInstance().lookupRepositoryEntry(resource.getOLATResourceable(), false);
                if (repoEntry != null) {
                    vC.contextPut("courseName" + i, StringHelper.escapeHtml(repoEntry.getDisplayname()));
                    String url = Settings.getServerContextPathURI();
                    url += "/url/RepositoryEntry/" + repoEntry.getKey() + "/CourseNode/" + resource.getSubPath();
                    vC.contextPut("courseLink" + i, url);
                }
                if (isLogDebugEnabled()) {
                    logDebug("  in loop : looked up course at : ", String.valueOf(System.currentTimeMillis()));
                }
                // get some stats about the restrictions if available
                String[] stats = ePFMgr.getRestrictionStatisticsOfMap(structMap);
                int toCollect = 0;
                if (stats != null) {
                    try {
                        toCollect = Integer.parseInt(stats[1]) - Integer.parseInt(stats[0]);
                    } catch (Exception e) {
                        // do nothing
                        toCollect = 0;
                    }
                }
                if (toCollect != 0) {
                    restriStats.add(String.valueOf(toCollect));
                } else {
                    restriStats.add(null);
                }
                if (isLogDebugEnabled()) {
                    logDebug("  in loop : calculated restriction statistics at : ", String.valueOf(System.currentTimeMillis()));
                }
            } else {
                deadLines.add(null);
                restriStats.add(null);
            }
            // show owner on shared maps
            if (!secCallback.isOwner()) {
                owners.add(ePFMgr.getAllOwnersAsString(map));
            } else
                owners.add(null);
            String artCount = String.valueOf(ePFMgr.countArtefactsInMap(map));
            artAmount.add(artCount);
            Integer childs = ePFMgr.countStructureChildren(map);
            childAmount.add(childs);
            amounts.add(translate("map.contains", new String[] { childs.toString(), artCount }));
            mapStyles.add(ePFMgr.getValidStyleName(map));
            if (isLogDebugEnabled()) {
                logDebug("  in loop : got map details (artefact-amount, child-struct-amount, style) at : ", String.valueOf(System.currentTimeMillis()));
            }
            i++;
        }
    }
    vC.contextPut("owners", owners);
    vC.contextPut("deadLines", deadLines);
    vC.contextPut("restriStats", restriStats);
    vC.contextPut("mapStyles", mapStyles);
    vC.contextPut("childAmount", childAmount);
    vC.contextPut("artefactAmount", artAmount);
    vC.contextPut("amounts", amounts);
    vC.contextPut("userMaps", userMaps);
    if (isLogDebugEnabled()) {
        long now = System.currentTimeMillis();
        logDebug("finished processing all maps at : ", String.valueOf(now));
        logDebug("Total processing time for " + (i - 1) + " maps was : ", String.valueOf(now - start));
    }
}
Also used : PortfolioStructureMap(org.olat.portfolio.model.structel.PortfolioStructureMap) EPTargetResource(org.olat.portfolio.model.structel.EPTargetResource) ArrayList(java.util.ArrayList) RepositoryEntry(org.olat.repository.RepositoryEntry) Date(java.util.Date) EPStructuredMap(org.olat.portfolio.model.structel.EPStructuredMap) PortfolioStructure(org.olat.portfolio.model.structel.PortfolioStructure) EPSecurityCallback(org.olat.portfolio.EPSecurityCallback) Component(org.olat.core.gui.components.Component) Link(org.olat.core.gui.components.link.Link)

Example 55 with Link

use of org.olat.core.gui.components.link.Link in project OpenOLAT by OpenOLAT.

the class EPMultipleMapController 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) {
    if (source instanceof Link) {
        Link srcLink = (Link) source;
        if (srcLink.getUserObject() instanceof PortfolioStructureMap) {
            PortfolioStructureMap selMap = (PortfolioStructureMap) srcLink.getUserObject();
            if (srcLink.getComponentName().startsWith(VIEW_LINK_PREFIX)) {
                activateMap(ureq, selMap);
                fireEvent(ureq, new EPMapEvent(EPStructureEvent.SELECT, selMap));
            } else if (srcLink.getComponentName().startsWith(DELETE_LINK_PREFIX)) {
                deleteMap(ureq, selMap);
            } else if (srcLink.getComponentName().startsWith(COPY_LINK_PREFIX)) {
                List<String> buttonLabels = new ArrayList<String>();
                String introKey = "copy.map.intro";
                if (ePFMgr.isMapOwner(getIdentity(), selMap)) {
                    buttonLabels.add(translate("copy.with.artefacts"));
                    introKey = "copy.map.intro2";
                }
                buttonLabels.add(translate("copy.without.artefacts"));
                buttonLabels.add(translate("copy.cancel"));
                String text = translate(introKey, StringHelper.escapeHtml(selMap.getTitle()));
                copyMapCtrl = activateGenericDialog(ureq, translate("copy.map.title"), text, buttonLabels, copyMapCtrl);
                copyMapCtrl.setUserObject(selMap);
            } else if (srcLink.getComponentName().startsWith(SHARE_LINK_PREFIX)) {
                popUpShareBox(ureq, selMap);
            } else if (srcLink.getComponentName().equals(RESTRICT_LINK)) {
                restrictShareView = !restrictShareView;
                initOrUpdateMaps(ureq);
            }
        } else {
            if (srcLink.equals(forwardLink)) {
                currentPageNum++;
                initOrUpdateMaps(ureq);
            } else if (srcLink.getComponentName().startsWith(PAGING_LINK_PREFIX)) {
                Integer page = (Integer) srcLink.getUserObject();
                currentPageNum = page.intValue();
                initOrUpdateMaps(ureq);
            } else if (srcLink.getComponentName().equals(RESTRICT_LINK)) {
                restrictShareView = !restrictShareView;
                initOrUpdateMaps(ureq);
            }
        }
    }
}
Also used : PortfolioStructureMap(org.olat.portfolio.model.structel.PortfolioStructureMap) ArrayList(java.util.ArrayList) Link(org.olat.core.gui.components.link.Link)

Aggregations

Link (org.olat.core.gui.components.link.Link)234 ArrayList (java.util.ArrayList)50 Component (org.olat.core.gui.components.Component)26 Identity (org.olat.core.id.Identity)22 Controller (org.olat.core.gui.control.Controller)18 CloseableModalController (org.olat.core.gui.control.generic.closablewrapper.CloseableModalController)16 FormLink (org.olat.core.gui.components.form.flexible.elements.FormLink)14 List (java.util.List)12 VelocityContainer (org.olat.core.gui.components.velocity.VelocityContainer)12 BasicController (org.olat.core.gui.control.controller.BasicController)12 Date (java.util.Date)10 OlatCmdEvent (org.olat.core.gui.components.htmlsite.OlatCmdEvent)10 Event (org.olat.core.gui.control.Event)10 AbstractArtefact (org.olat.portfolio.model.artefacts.AbstractArtefact)10 DialogBoxController (org.olat.core.gui.control.generic.modal.DialogBoxController)9 VetoableCloseController (org.olat.core.gui.control.VetoableCloseController)8 WindowControl (org.olat.core.gui.control.WindowControl)8 CloseableCalloutWindowController (org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController)8 PortfolioStructure (org.olat.portfolio.model.structel.PortfolioStructure)8 HashSet (java.util.HashSet)6