Skip to content
Snippets Groups Projects
Commit d36d7a27 authored by srosse's avatar srosse
Browse files

OO-984: make the thumbnail in "my courses" list clickable

parent c62fb76c
No related branches found
No related tags found
No related merge requests found
Showing
with 52 additions and 98 deletions
/**
* 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
...@@ -523,6 +523,10 @@ public class Form extends LogDelegator { ...@@ -523,6 +523,10 @@ public class Form extends LogDelegator {
ComponentCollection getFormLayout() { ComponentCollection getFormLayout() {
return (ComponentCollection) formLayout.getComponent(); return (ComponentCollection) formLayout.getComponent();
} }
FormItemContainer getFormItemContainer() {
return formLayout;
}
public Component getInitialComponent() { public Component getInitialComponent() {
return formWrapperComponent; return formWrapperComponent;
......
...@@ -27,7 +27,6 @@ package org.olat.core.gui.components.form.flexible.impl; ...@@ -27,7 +27,6 @@ package org.olat.core.gui.components.form.flexible.impl;
import java.util.Map; 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.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.SpacerElement; import org.olat.core.gui.components.form.flexible.elements.SpacerElement;
...@@ -42,11 +41,15 @@ import org.olat.core.util.StringHelper; ...@@ -42,11 +41,15 @@ import org.olat.core.util.StringHelper;
* *
* @author patrickb * @author patrickb
*/ */
public class FormDecoratorImpl implements FormDecorator { public class FormDecorator {
private final FormItemContainer container; private final FormItemContainer container;
public FormDecorator(Form theForm) {
this.container = theForm.getFormItemContainer();
}
public FormDecoratorImpl(FormItemContainer container) { public FormDecorator(FormItemContainer container) {
this.container = container; this.container = container;
} }
...@@ -121,6 +124,12 @@ public class FormDecoratorImpl implements FormDecorator { ...@@ -121,6 +124,12 @@ public class FormDecoratorImpl implements FormDecorator {
return (item instanceof SpacerElement); 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() { public String getContainerCssClass() {
if (container != null && StringHelper.containsNonWhitespace(container.getElementCssClass())) { if (container != null && StringHelper.containsNonWhitespace(container.getElementCssClass())) {
return " " + container.getElementCssClass(); return " " + container.getElementCssClass();
......
...@@ -474,8 +474,7 @@ public abstract class FormItemImpl implements FormItem, InlineElement { ...@@ -474,8 +474,7 @@ public abstract class FormItemImpl implements FormItem, InlineElement {
return; return;
} }
//before/ after pattern //before/ after pattern
int action = getRootForm().getAction(); switch (getRootForm().getAction()) {
switch (action) {
case FormEvent.ONCLICK: case FormEvent.ONCLICK:
getRootForm().fireFormEvent(ureq, new FormEvent("ONCLICK", this, FormEvent.ONCLICK)); getRootForm().fireFormEvent(ureq, new FormEvent("ONCLICK", this, FormEvent.ONCLICK));
break; break;
......
...@@ -122,7 +122,7 @@ public class FormLayoutContainer extends FormItemImpl implements FormItemContain ...@@ -122,7 +122,7 @@ public class FormLayoutContainer extends FormItemImpl implements FormItemContain
} }
translator = formTranslator; translator = formTranslator;
// add the form decorator for the $f.hasError("ddd") etc. // 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 // this container manages the form items, the GUI form item componentes are
// managed in the associated velocitycontainer // managed in the associated velocitycontainer
formComponentsNames = new ArrayList<String>(5); formComponentsNames = new ArrayList<String>(5);
......
...@@ -23,6 +23,7 @@ package org.olat.core.gui.components.form.flexible.impl.elements.table; ...@@ -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.Component;
import org.olat.core.gui.components.ComponentRenderer; import org.olat.core.gui.components.ComponentRenderer;
import org.olat.core.gui.components.form.flexible.FormItem; 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.form.flexible.impl.FormJSHelper;
import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.render.RenderResult; import org.olat.core.gui.render.RenderResult;
...@@ -92,6 +93,7 @@ class FlexiTableCustomRenderer extends AbstractFlexiTableRenderer implements Com ...@@ -92,6 +93,7 @@ class FlexiTableCustomRenderer extends AbstractFlexiTableRenderer implements Com
FlexiTableElementImpl ftE = ftC.getFlexiTableElement(); FlexiTableElementImpl ftE = ftC.getFlexiTableElement();
VelocityContainer container = ftE.getRowRenderer(); VelocityContainer container = ftE.getRowRenderer();
container.contextPut("f", new FormDecorator(ftE.getRootForm()));
FlexiTableDataModel<?> dataModel = ftE.getTableDataModel(); FlexiTableDataModel<?> dataModel = ftE.getTableDataModel();
Object rowObject = ftE.getTableDataModel().getObject(row); Object rowObject = ftE.getTableDataModel().getObject(row);
...@@ -127,6 +129,7 @@ class FlexiTableCustomRenderer extends AbstractFlexiTableRenderer implements Com ...@@ -127,6 +129,7 @@ class FlexiTableCustomRenderer extends AbstractFlexiTableRenderer implements Com
container.getHTMLRendererSingleton().render(renderer, sb, container, ubu, translator, renderResult, null); container.getHTMLRendererSingleton().render(renderer, sb, container, ubu, translator, renderResult, null);
container.contextRemove("row"); container.contextRemove("row");
container.contextRemove("f");
sb.append("</div>"); sb.append("</div>");
} }
......
...@@ -160,9 +160,13 @@ public class CatalogNodeController extends BasicController implements Activateab ...@@ -160,9 +160,13 @@ public class CatalogNodeController extends BasicController implements Activateab
} else if("img_select".equals(event.getCommand())) { } else if("img_select".equals(event.getCommand())) {
String node = ureq.getParameter("node"); String node = ureq.getParameter("node");
if(StringHelper.isLong(node)) { if(StringHelper.isLong(node)) {
Long categoryNodeKey = new Long(node); try {
CatalogEntry entry = catalogManager.getCatalogNodeByKey(categoryNodeKey); Long categoryNodeKey = new Long(node);
selectCatalogEntry(ureq, entry); CatalogEntry entry = catalogManager.getCatalogNodeByKey(categoryNodeKey);
selectCatalogEntry(ureq, entry);
} catch (NumberFormatException e) {
logWarn("Not a valid long: " + node, e);
}
} }
} }
} }
......
...@@ -318,6 +318,27 @@ public class RepositoryEntryListController extends FormBasicController ...@@ -318,6 +318,27 @@ public class RepositoryEntryListController extends FormBasicController
doFilter(selectedFilters); doFilter(selectedFilters);
flc.setDirty(true); 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); super.event(ureq, source, event);
} }
......
<div #if($row.selected) class="o_selected" #end> <div #if($row.selected) class="o_selected" #end>
<div class="o_visual"> <div class="o_visual">
<a href="javascript:${f.ffXHREvent("select_row","$row.key")}">
#if($row.isThumbnailAvailable()) #if($row.isThumbnailAvailable())
<img src="${row.getThumbnailRelPath()}" /> <img src="${row.getThumbnailRelPath()}" />
#else #else
<div class="o_visual_not_available"></div> <div class="o_visual_not_available"></div>
#end #end
</a>
</div> </div>
<div class="o_meta o_withEllipsis"> <div class="o_meta o_withEllipsis">
<div class="o_go_xs visible-xs"> <div class="o_go_xs visible-xs">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment