diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/FormDecorator.java b/src/main/java/org/olat/core/gui/components/form/flexible/FormDecorator.java deleted file mode 100644 index 7bd2000b91846355adb2a9e8ded66a4faafb570e..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/core/gui/components/form/flexible/FormDecorator.java +++ /dev/null @@ -1,88 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ -package org.olat.core.gui.components.form.flexible; -/** - * - * @author patrickb - * - */ -public interface FormDecorator { - - /** - * - * @param formItemName - * @return - */ - public boolean hasError(String formItemName); - - /** - * - * @param formItemName - * @return - */ - public boolean hasExample(String formItemName); - - /** - * - * @param formItemName - * @return - */ - public boolean hasLabel(String formItemName); - - /** - * - * @param formItemName - * @return - */ - public boolean isMandatory(String formItemName); - - /** - * - * @param formItemName - * @return - */ - public boolean isVisible(String formItemName); - - /** - * - * @param formItemName - * @return - */ - public boolean isEnabled(String formItemName); - - /** - * - * @param formItemName - * @return - */ - public String getItemId(String formItemName); - - /** - * - * @param formItemName - * @return - */ - public boolean isSpacerElement(String formItemName); -} \ No newline at end of file diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/Form.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/Form.java index 5fdc3ec4353b2b82311c51163e797ce9eca08f92..4ddd5c6f48981376972b3046fc158c00fbe2c42f 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/Form.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/Form.java @@ -523,6 +523,10 @@ public class Form extends LogDelegator { ComponentCollection getFormLayout() { return (ComponentCollection) formLayout.getComponent(); } + + FormItemContainer getFormItemContainer() { + return formLayout; + } public Component getInitialComponent() { return formWrapperComponent; diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecoratorImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecorator.java similarity index 91% rename from src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecoratorImpl.java rename to src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecorator.java index 22dbbf5636cec636a3c22e91b4d2440182d55062..412684fefb892e0eba53d8bc700a36eb4800c5d8 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecoratorImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecorator.java @@ -27,7 +27,6 @@ package org.olat.core.gui.components.form.flexible.impl; import java.util.Map; -import org.olat.core.gui.components.form.flexible.FormDecorator; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.SpacerElement; @@ -42,11 +41,15 @@ import org.olat.core.util.StringHelper; * * @author patrickb */ -public class FormDecoratorImpl implements FormDecorator { +public class FormDecorator { private final FormItemContainer container; + + public FormDecorator(Form theForm) { + this.container = theForm.getFormItemContainer(); + } - public FormDecoratorImpl(FormItemContainer container) { + public FormDecorator(FormItemContainer container) { this.container = container; } @@ -121,6 +124,12 @@ public class FormDecoratorImpl implements FormDecorator { return (item instanceof SpacerElement); } + public String ffXHREvent(String key, String value) { + Form theForm = container.getRootForm(); + String elementId = "o_fi" + container.getComponent().getDispatchID(); + return FormJSHelper.getXHRFnCallFor(theForm, elementId, 1, new NameValuePair(key, value)); + } + public String getContainerCssClass() { if (container != null && StringHelper.containsNonWhitespace(container.getElementCssClass())) { return " " + container.getElementCssClass(); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java index 59beb195dc333dad893b14b0dff2c872f8c85fca..a67ef4fd603036a3395c871e804c5f3898adce91 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java @@ -474,8 +474,7 @@ public abstract class FormItemImpl implements FormItem, InlineElement { return; } //before/ after pattern - int action = getRootForm().getAction(); - switch (action) { + switch (getRootForm().getAction()) { case FormEvent.ONCLICK: getRootForm().fireFormEvent(ureq, new FormEvent("ONCLICK", this, FormEvent.ONCLICK)); break; diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormLayoutContainer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormLayoutContainer.java index 2eb4e7bc1f775db3280ff18f0c339d7775fb1762..1f4c1a09b4385d81b11bf9207293af852dcb0d87 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormLayoutContainer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormLayoutContainer.java @@ -122,7 +122,7 @@ public class FormLayoutContainer extends FormItemImpl implements FormItemContain } translator = formTranslator; // add the form decorator for the $f.hasError("ddd") etc. - formLayoutContainer.contextPut("f", new FormDecoratorImpl(this)); + formLayoutContainer.contextPut("f", new FormDecorator(this)); // this container manages the form items, the GUI form item componentes are // managed in the associated velocitycontainer formComponentsNames = new ArrayList<String>(5); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java index 6665ca5ef46df7e9fc775aeeae4e15210497245a..12015ae60de372610ea136e4cbf6c68b51be8ee7 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java @@ -23,6 +23,7 @@ package org.olat.core.gui.components.form.flexible.impl.elements.table; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.ComponentRenderer; import org.olat.core.gui.components.form.flexible.FormItem; +import org.olat.core.gui.components.form.flexible.impl.FormDecorator; import org.olat.core.gui.components.form.flexible.impl.FormJSHelper; import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.render.RenderResult; @@ -92,6 +93,7 @@ class FlexiTableCustomRenderer extends AbstractFlexiTableRenderer implements Com FlexiTableElementImpl ftE = ftC.getFlexiTableElement(); VelocityContainer container = ftE.getRowRenderer(); + container.contextPut("f", new FormDecorator(ftE.getRootForm())); FlexiTableDataModel<?> dataModel = ftE.getTableDataModel(); Object rowObject = ftE.getTableDataModel().getObject(row); @@ -127,6 +129,7 @@ class FlexiTableCustomRenderer extends AbstractFlexiTableRenderer implements Com container.getHTMLRendererSingleton().render(renderer, sb, container, ubu, translator, renderResult, null); container.contextRemove("row"); + container.contextRemove("f"); sb.append("</div>"); } diff --git a/src/main/java/org/olat/repository/ui/list/CatalogNodeController.java b/src/main/java/org/olat/repository/ui/list/CatalogNodeController.java index 255510eab8e2e9be9d58b4bd056f493cf72c1139..da4fd9c0e8677e2b945e8d733e915a801414b9b2 100644 --- a/src/main/java/org/olat/repository/ui/list/CatalogNodeController.java +++ b/src/main/java/org/olat/repository/ui/list/CatalogNodeController.java @@ -160,9 +160,13 @@ public class CatalogNodeController extends BasicController implements Activateab } else if("img_select".equals(event.getCommand())) { String node = ureq.getParameter("node"); if(StringHelper.isLong(node)) { - Long categoryNodeKey = new Long(node); - CatalogEntry entry = catalogManager.getCatalogNodeByKey(categoryNodeKey); - selectCatalogEntry(ureq, entry); + try { + Long categoryNodeKey = new Long(node); + CatalogEntry entry = catalogManager.getCatalogNodeByKey(categoryNodeKey); + selectCatalogEntry(ureq, entry); + } catch (NumberFormatException e) { + logWarn("Not a valid long: " + node, e); + } } } } diff --git a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java index ed050383e06bbe16e2143026a076a30973230024..ce42dbed61a6d51de514b81887afb33955e3c218 100644 --- a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java +++ b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java @@ -318,6 +318,27 @@ public class RepositoryEntryListController extends FormBasicController doFilter(selectedFilters); flc.setDirty(true); } + } else if(source == mainForm.getInitialComponent()) { + if("ONCLICK".equals(event.getCommand())) { + String rowKeyStr = ureq.getParameter("select_row"); + if(StringHelper.isLong(rowKeyStr)) { + try { + Long rowKey = new Long(rowKeyStr); + List<RepositoryEntryRow> rows = model.getObjects(); + for(RepositoryEntryRow row:rows) { + if(row.getKey().equals(rowKey)) { + if (row.isMember()) { + doOpen(ureq, row); + } else { + doOpenDetails(ureq, row); + } + } + } + } catch (NumberFormatException e) { + logWarn("Not a valid long: " + rowKeyStr, e); + } + } + } } super.event(ureq, source, event); } diff --git a/src/main/java/org/olat/repository/ui/list/_content/row_1.html b/src/main/java/org/olat/repository/ui/list/_content/row_1.html index ee840d406caa7c8a0c511afe294eb780835cee5c..d3a3c1251c48f99b60541eb98d7704756cb38622 100644 --- a/src/main/java/org/olat/repository/ui/list/_content/row_1.html +++ b/src/main/java/org/olat/repository/ui/list/_content/row_1.html @@ -1,10 +1,12 @@ <div #if($row.selected) class="o_selected" #end> <div class="o_visual"> + <a href="javascript:${f.ffXHREvent("select_row","$row.key")}"> #if($row.isThumbnailAvailable()) <img src="${row.getThumbnailRelPath()}" /> #else <div class="o_visual_not_available"></div> - #end + #end + </a> </div> <div class="o_meta o_withEllipsis"> <div class="o_go_xs visible-xs">