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;
}
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));
}
}
}
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);
}
}
}
}
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);
}
}
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();
}
Aggregations