Search in sources :

Example 56 with Link

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

the class EPTagBrowseController method recalculateTagCloud.

private List<AbstractArtefact> recalculateTagCloud() {
    List<String> selectedTags = getSelectedTags();
    if (selectedTags.isEmpty()) {
        for (Link tagLink : tagLinks) {
            TagWrapper tagWrapper = (TagWrapper) tagLink.getUserObject();
            tagLink.setCustomEnabledLinkCSS(inactiveCSS);
            tagLink.setEnabled(true);
            tagWrapper.setState(TagState.possible);
        }
        return allUsersArtefacts;
    }
    EPArtefactTagCloud artefactsAndTags = ePFMgr.getArtefactsAndTagCloud(getIdentity(), selectedTags);
    List<AbstractArtefact> filteredArtefacts = artefactsAndTags.getArtefacts();
    Set<String> newTags = artefactsAndTags.getTags();
    if (newTags != null && !newTags.isEmpty()) {
        for (Link tagLink : tagLinks) {
            TagWrapper tagWrapper = (TagWrapper) tagLink.getUserObject();
            String tag = tagWrapper.getTag();
            switch(tagWrapper.getState()) {
                case selected:
                    tagLink.setCustomEnabledLinkCSS(activeCSS);
                    tagLink.setEnabled(true);
                    break;
                case possible:
                    if (!newTags.contains(tag)) {
                        tagWrapper.setState(TagState.unpossible);
                        tagLink.setEnabled(false);
                    } else {
                        tagLink.setCustomEnabledLinkCSS(inactiveCSS);
                        tagLink.setEnabled(true);
                    }
                    break;
                case unpossible:
                    if (newTags.contains(tag)) {
                        tagWrapper.setState(TagState.possible);
                        tagLink.setCustomEnabledLinkCSS(inactiveCSS);
                        tagLink.setEnabled(true);
                    } else {
                        tagLink.setEnabled(false);
                    }
                    break;
            }
        }
    }
    return filteredArtefacts;
}
Also used : EPArtefactTagCloud(org.olat.portfolio.manager.EPArtefactTagCloud) AbstractArtefact(org.olat.portfolio.model.artefacts.AbstractArtefact) Link(org.olat.core.gui.components.link.Link)

Example 57 with Link

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

the class EPTOCReadOnlyController 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 == artOnOffLink) {
        displayArtefactsInTOC = !displayArtefactsInTOC;
        artOnOffLink.setCustomDisplayText(translate("artOnOffLink." + !displayArtefactsInTOC));
        refreshTOC(ureq);
    } else if (source instanceof Link) {
        // could be a TOC-Link
        Link link = (Link) source;
        String cmd = link.getCommand();
        PortfolioStructure parentStruct = (PortfolioStructure) link.getUserObject();
        if (cmd.equals(LINK_CMD_OPEN_STRUCT)) {
            fireEvent(ureq, new EPStructureEvent(EPStructureEvent.SELECT, parentStruct));
        } else if (cmd.equals(LINK_CMD_OPEN_ARTEFACT)) {
            // open the parent structure
            fireEvent(ureq, new EPStructureEvent(EPStructureEvent.SELECT, parentStruct));
        } else if (cmd.equals(LINK_CMD_OPEN_COMMENTS)) {
            fireEvent(ureq, new EPStructureEvent(EPStructureEvent.SELECT_WITH_COMMENTS, parentStruct));
        }
    }
}
Also used : EPStructureEvent(org.olat.portfolio.ui.structel.EPStructureEvent) PortfolioStructure(org.olat.portfolio.model.structel.PortfolioStructure) Link(org.olat.core.gui.components.link.Link)

Example 58 with Link

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

the class EPTOCReadOnlyController method buildTOCModel.

/**
 * builds the tocList recursively containing artefacts, pages and
 * struct-Elements
 *
 * @param pStruct
 * @param tocList
 *            list with TOCElement's to use in velocity
 * @param level
 * @param withArtefacts
 *            set false, to skip artefacts
 */
private void buildTOCModel(PortfolioStructure pStruct, List<TOCElement> tocList, int level) {
    level++;
    if (displayArtefactsInTOC) {
        List<AbstractArtefact> artList = ePFMgr.getArtefacts(pStruct);
        if (artList != null && artList.size() != 0) {
            for (AbstractArtefact artefact : artList) {
                String key = String.valueOf(artefact.getKey());
                String title = StringHelper.escapeHtml(artefact.getTitle());
                Link iconLink = LinkFactory.createCustomLink("arte_" + key, LINK_CMD_OPEN_ARTEFACT, "", Link.NONTRANSLATED, vC, this);
                iconLink.setIconRightCSS("o_icon o_icon_start");
                iconLink.setUserObject(pStruct);
                Link titleLink = LinkFactory.createCustomLink("arte_t_" + key, LINK_CMD_OPEN_ARTEFACT, title, Link.NONTRANSLATED, vC, this);
                titleLink.setUserObject(pStruct);
                TOCElement actualTOCEl = new TOCElement(level, "artefact", titleLink, iconLink, null, null);
                tocList.add(actualTOCEl);
            }
        }
    }
    List<PortfolioStructure> childs = ePFMgr.loadStructureChildren(pStruct);
    if (childs != null && childs.size() != 0) {
        for (PortfolioStructure portfolioStructure : childs) {
            String type = "";
            if (portfolioStructure instanceof EPPage) {
                type = CONST_FOR_VC_STYLE_PAGE;
            } else {
                // a structure element
                type = CONST_FOR_VC_STYLE_STRUCT;
            }
            String key = String.valueOf(portfolioStructure.getKey());
            String title = StringHelper.escapeHtml(portfolioStructure.getTitle());
            Link iconLink = LinkFactory.createCustomLink("portstruct" + key, LINK_CMD_OPEN_STRUCT, "", Link.NONTRANSLATED, vC, this);
            iconLink.setIconRightCSS("o_icon o_icon_start");
            iconLink.setUserObject(portfolioStructure);
            Link titleLink = LinkFactory.createCustomLink("portstruct_t_" + key, LINK_CMD_OPEN_STRUCT, title, Link.NONTRANSLATED, vC, this);
            titleLink.setUserObject(portfolioStructure);
            Link commentLink = null;
            if (portfolioStructure instanceof EPPage && secCallback.canCommentAndRate()) {
                UserCommentsCount comments = getUserCommentsCount(portfolioStructure);
                String count = comments == null ? "0" : comments.getCount().toString();
                String label = translate("commentLink", new String[] { count });
                commentLink = LinkFactory.createCustomLink("commentLink" + key, LINK_CMD_OPEN_COMMENTS, label, Link.NONTRANSLATED, vC, this);
                commentLink.setIconLeftCSS("o_icon o_icon_comments");
                commentLink.setUserObject(portfolioStructure);
            }
            // prefetch children to keep reference on them
            List<TOCElement> tocChildList = new ArrayList<TOCElement>();
            buildTOCModel(portfolioStructure, tocChildList, level);
            TOCElement actualTOCEl = new TOCElement(level, type, titleLink, iconLink, commentLink, tocChildList);
            tocList.add(actualTOCEl);
            if (tocChildList.size() != 0) {
                tocList.addAll(tocChildList);
            }
        }
    }
}
Also used : EPPage(org.olat.portfolio.model.structel.EPPage) AbstractArtefact(org.olat.portfolio.model.artefacts.AbstractArtefact) PortfolioStructure(org.olat.portfolio.model.structel.PortfolioStructure) ArrayList(java.util.ArrayList) Link(org.olat.core.gui.components.link.Link) UserCommentsCount(org.olat.core.commons.services.commentAndRating.model.UserCommentsCount)

Example 59 with Link

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

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);
    }
}
Also used : ArrayList(java.util.ArrayList) Link(org.olat.core.gui.components.link.Link)

Example 60 with Link

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

the class PortalImpl method initPortlets.

/**
 * Initialize all portles found in the configuration
 * @param ureq
 */
private void initPortlets(UserRequest ureq) {
    // load all possible portlets, portlets run controller is only loaded when really used
    Iterator<Portlet> portletsIter = PortletFactory.getPortlets().values().iterator();
    while (portletsIter.hasNext()) {
        Portlet portlet = portletsIter.next();
        log.debug("initPortlets portletName=" + portlet.getName());
        if (portlet.isEnabled()) {
            PortletContainer pc = null;
            // fxdiff make the system tolerant to portlet errors
            try {
                pc = PortletFactory.getPortletContainerFor(portlet, getWindowControl(), ureq);
            } catch (Exception e) {
                log.error("Cannot open a portlet: " + portlet, e);
            }
            pc.addControllerListener(this);
            // remember this portlet container
            portletContainers.put(portlet.getName(), pc);
            String addLinkName = "command.add." + portlet.getName();
            Link tmp = LinkFactory.createCustomLink(addLinkName, addLinkName, "add", Link.BUTTON_SMALL, portalVC, this);
            tmp.setIconLeftCSS("o_icon o_icon_add");
            tmp.setElementCssClass("o_portlet_edit_add");
            tmp.setUserObject(portlet.getName());
            // and add to velocity
            portalVC.put(portlet.getName(), pc.getInitialComponent());
            // check if portlet is active for this user
            Iterator<List<String>> colIter = portalColumns.iterator();
            boolean isActive = false;
            while (colIter.hasNext()) {
                List<String> row = colIter.next();
                Iterator<String> rowIter = row.iterator();
                while (rowIter.hasNext()) {
                    String activePortletName = rowIter.next();
                    if (portlet.getName().equals(activePortletName))
                        isActive = true;
                }
            }
            if (isActive) {
                // initialize portlet container for active portlets only
                pc.initializeRunComponent(ureq, editModeEnabled);
            } else {
                // add it to inacitve portlets list if not active
                inactivePortlets.add(portlet.getName());
            }
        }
    }
    // update links on visible portlets
    updatePositionChangeLinks();
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) AssertException(org.olat.core.logging.AssertException) 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