From 8c0124819cb55f39278b0dbaaed41e1ff6d80243 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Mon, 20 Dec 2010 15:34:58 +0000 Subject: [PATCH] NIHVIVO-1336 Finished custom list view for core:educationalTraining property --- .../controller/freemarker/TestController.java | 7 +++++++ .../vitro/webapp/dao/jena/QueryUtils.java | 7 ++++++- .../ObjectPropertyTemplateModel.java | 3 +++ webapp/web/config/listViewConfig-default.xml | 2 ++ .../web/templates/freemarker/body/samples.ftl | 8 +++++--- webapp/web/templates/freemarker/body/test.ftl | 12 +++++------ .../templates/freemarker/lib/lib-datetime.ftl | 20 +++++++++++++++++++ .../web/templates/freemarker/lib/lib-list.ftl | 2 ++ 8 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 webapp/web/templates/freemarker/lib/lib-datetime.ftl diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java index 05c0fd528..763124d4a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java @@ -37,6 +37,13 @@ public class TestController extends FreemarkerHttpServlet { body.put("title", "Freemarker Test"); + Calendar cal = Calendar.getInstance(); + Date now = cal.getTime(); + body.put("now", now); + // In template: ${now?date}, ${now?datetime}, ${now?time} + + body.put("datetime", "1983-12-07T17:15:28Z"); + return new TemplateResponseValues(TEMPLATE_DEFAULT, body); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/QueryUtils.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/QueryUtils.java index bb2d9c8a2..bff4f4dec 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/QueryUtils.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/QueryUtils.java @@ -8,6 +8,9 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import com.hp.hpl.jena.query.QueryExecution; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; @@ -21,7 +24,9 @@ import com.hp.hpl.jena.rdf.model.Resource; */ public class QueryUtils { - + + private static final Log log = LogFactory.getLog(QueryUtils.class); + protected static Map querySolutionToObjectValueMap( QuerySolution soln){ Map map = new HashMap(); Iterator varNames = soln.varNames(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java index 870b93dec..1ae818187 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java @@ -86,11 +86,13 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel private static final String NODE_NAME_TEMPLATE = "template"; private static final String NODE_NAME_COLLATION_TARGET = "collation-target"; private static final String NODE_NAME_POSTPROCESSOR = "postprocessor"; + private static final String NODE_NAME_EDIT_OBJECT = "edit-object"; private String queryString; private String templateName; private String collationTarget; private String postprocessor; + private String editObject; PropertyListConfig(ObjectProperty op, WebappDaoFactory wdf) throws Exception { @@ -121,6 +123,7 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel // Optional values collationTarget = getConfigValue(doc, NODE_NAME_COLLATION_TARGET); postprocessor = getConfigValue(doc, NODE_NAME_POSTPROCESSOR); + editObject = getConfigValue(doc, NODE_NAME_EDIT_OBJECT); } catch (Exception e) { log.error("Error processing config file " + configFilePath + " for object property " + op.getURI(), e); // What should we do here? diff --git a/webapp/web/config/listViewConfig-default.xml b/webapp/web/config/listViewConfig-default.xml index 92e322d5f..d03ee8b48 100644 --- a/webapp/web/config/listViewConfig-default.xml +++ b/webapp/web/config/listViewConfig-default.xml @@ -14,6 +14,8 @@ object + object + edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.DefaultObjectPropertyDataPostprocessor diff --git a/webapp/web/templates/freemarker/body/samples.ftl b/webapp/web/templates/freemarker/body/samples.ftl index f7aa908f8..4d8800d0b 100644 --- a/webapp/web/templates/freemarker/body/samples.ftl +++ b/webapp/web/templates/freemarker/body/samples.ftl @@ -4,11 +4,13 @@

${title}

+<@widget name="test" /> +

Dates

    -
  • ${now?datetime}
  • -
  • ${now?date}
  • -
  • ${now?time}
  • +
  • Current date & time: ${now?datetime}
  • +
  • Current date: ${now?date}
  • +
  • Current time: ${now?time}

Apples

diff --git a/webapp/web/templates/freemarker/body/test.ftl b/webapp/web/templates/freemarker/body/test.ftl index 83f9eb889..12a5216f1 100644 --- a/webapp/web/templates/freemarker/body/test.ftl +++ b/webapp/web/templates/freemarker/body/test.ftl @@ -2,13 +2,13 @@ <#-- FreeMarker test cases --> +<#import "lib-datetime.ftl" as dt> +

${title}

-<@widget name="test" /> +

Current date & time: ${now?datetime}

+

Current date: ${now?date}

+

Current datetime: ${now?time}

-${stylesheets.add("/css/testfrombody.css")} -${scripts.add("/js/jstest.js")} -${bodyClass} - -
    <@list.firstLastList>
  • apples
  • bananas
+

${dt.xsdDateTimeToYear(datetime)}

\ No newline at end of file diff --git a/webapp/web/templates/freemarker/lib/lib-datetime.ftl b/webapp/web/templates/freemarker/lib/lib-datetime.ftl new file mode 100644 index 000000000..994b7bfb8 --- /dev/null +++ b/webapp/web/templates/freemarker/lib/lib-datetime.ftl @@ -0,0 +1,20 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + +<#-- Macros and functions for datetime formatting. + + Currently these do more than format the datetime string, they actually select the precision as well. This should change in a future + implementation; see NIHVIVO-1567. We want the Java code to apply the precision to the datetime string to pass only the + meaningful data to the templates. The templates can format as they like, so these functions/macros would do display formatting + but not data extraction. + --> + +<#-- Function xsdDateTimeToYear + + Display an XSD datetime string as a year. + + Example: 1983-12-07T17:15:28Z displays as 1983 +--> + +<#function xsdDateTimeToYear datetime> + <#return datetime?date("yyyy")?string("yyyy") > + \ No newline at end of file diff --git a/webapp/web/templates/freemarker/lib/lib-list.ftl b/webapp/web/templates/freemarker/lib/lib-list.ftl index e75ca5701..dc61b170d 100644 --- a/webapp/web/templates/freemarker/lib/lib-list.ftl +++ b/webapp/web/templates/freemarker/lib/lib-list.ftl @@ -1,5 +1,7 @@ <#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> +<#-- Macros for generating html lists --> + <#-- Macro: firstLastList