diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/TemplateUtils.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/TemplateUtils.java new file mode 100644 index 000000000..255af39ee --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/TemplateUtils.java @@ -0,0 +1,53 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.web; + +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import freemarker.template.TemplateCollectionModel; +import freemarker.template.TemplateMethodModelEx; +import freemarker.template.TemplateModel; +import freemarker.template.TemplateModelException; +import freemarker.template.TemplateScalarModel; +import freemarker.template.TemplateSequenceModel; +import freemarker.template.utility.DeepUnwrap; + +/** + * TODO + */ +public class TemplateUtils { + private static final Log log = LogFactory.getLog(TemplateUtils.class); + + public static class DropFromSequence implements TemplateMethodModelEx { + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public Object exec(List args) throws TemplateModelException { + if (args.size() != 2) { + throw new TemplateModelException("Wrong number of arguments"); + } + + TemplateModel sequenceWrapper = (TemplateModel) args.get(0); + if (!(sequenceWrapper instanceof TemplateSequenceModel) + && !(sequenceWrapper instanceof TemplateCollectionModel)) { + throw new TemplateModelException( + "First argument must be a sequence or a collection"); + } + TemplateModel unwantedWrapper = (TemplateModel) args.get(1); + if (!(unwantedWrapper instanceof TemplateScalarModel)) { + throw new TemplateModelException( + "Second argument must be a string"); + } + + List sequence = (List) DeepUnwrap + .unwrap(sequenceWrapper); + String unwanted = (String) DeepUnwrap.unwrap(unwantedWrapper); + + sequence.remove(unwanted); + return sequence; + } + + } +} diff --git a/webapp/web/templates/freemarker/body/partials/shortview/view-browse-default.ftl b/webapp/web/templates/freemarker/body/partials/shortview/view-browse-default.ftl index a1aec83aa..6d799a037 100644 --- a/webapp/web/templates/freemarker/body/partials/shortview/view-browse-default.ftl +++ b/webapp/web/templates/freemarker/body/partials/shortview/view-browse-default.ftl @@ -17,11 +17,7 @@ -<#assign typesString> - [<#list individual.mostSpecificTypes as type><#if type != vclass>,"${type}"] - -<#assign cleanTypes = typesString?replace("[,", "[")?eval > - +<#assign cleanTypes = 'edu.cornell.mannlib.vitro.webapp.web.TemplateUtils$DropFromSequence'?new()(individual.mostSpecificTypes, vclass) /> <#if cleanTypes?size == 1> ${cleanTypes[0]} <#elseif (cleanTypes?size > 1) >