diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl new file mode 100644 index 00000000..7891a72e --- /dev/null +++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl @@ -0,0 +1,106 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + +<#-- VIVO-specific default data property statement template. + + This template must be self-contained and not rely on other variables set for the individual page, because it + is also used to generate the property statement during a deletion. + --> +<#import "lib-datetime.ftl" as dt> +<#if property.rangeDatatypeURI?? && property.rangeDatatypeURI?contains("#")> + <#assign datatype = property.rangeDatatypeURI?substring(property.rangeDatatypeURI?last_index_of("#")+1) /> +<#else> + <#assign datatype = "none" /> +#if> +<@showStatement statement datatype /> + +<#macro showStatement statement datatype> + <#assign theValue = statement.value /> + + <#if theValue?contains("
") > + <#assign theValue = theValue?replace("
","
") />
+ #if>
+ <#if theValue?matches("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})") >
+ <#assign theValue = theValue + "T00:00:00" />
+ ${dt.formatXsdDateTimeLong(theValue, "yearMonthDayPrecision")}
+ <#elseif theValue?matches("^([0-9]{4})-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3[0-1]))(T|\\s)(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])")>
+ <#if theValue?contains("T00:00:00") >
+ ${dt.formatXsdDateTimeLong(theValue, "yearMonthDayPrecision")}
+ <#else>
+ ${dt.formatXsdDateTimeLong(theValue, "yearMonthDayTimePrecision")}
+ #if>
+ <#elseif theValue?matches("^([0-9]{4})-(0[1-9]|1[012])")>
+ <#assign theValue = theValue + "-01T00:00:00" />
+ ${dt.formatXsdDateTimeLong(theValue, "yearMonthPrecision")}
+ <#elseif theValue?matches("^--(0[1-9]|1[012])")>
+ <#assign theValue = "2000" + theValue?substring(1) + "-01T00:00:00" />
+ ${dt.formatXsdDateTimeLong(theValue, "monthPrecision")}
+ <#else>
+ ${theValue} <#if !datatype?contains("none")> <@validateFormat theValue datatype/> #if>
+ #if>
+#macro>
+<#macro validateFormat value datatype >
+ <#if datatype?? >
+ <#switch datatype>
+ <#case "date">
+ <#-- validated above -->
+ invalid format
+ <#break>
+ <#case "dateTime">
+
<#-- validated above -->
+ invalid format
+ <#break>
+ <#case "time">
+ <#if !value?matches("(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])") >
+
+ invalid format
+ #if>
+ <#break>
+ <#case "gYear">
+ <#if !value?matches("^\\d{4}") >
+
+ invalid format
+ #if>
+ <#break>
+ <#case "gMonth">
+
<#-- validated above -->
+ invalid format
+ <#break>
+ <#case "gYearMonth">
+
<#-- validated above -->
+ invalid format
+ <#break>
+ <#case "float">
+ <#if !value?matches("^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?.") >
+
+ invalid format
+ #if>
+ <#break>
+ <#case "integer">
+ <#if !value?matches("^-?\\d+$") >
+
+ invalid format
+ #if>
+ <#break>
+ <#case "int">
+ <#if !value?matches("^-?\\d+$") >
+
+ invalid format
+ #if>
+ <#break>
+ <#case "boolean">
+ <#if !value?matches("false") && !value?matches("true") >
+
+ invalid format
+ #if>
+ <#break>
+ <#default>
+ #switch>
+ #if>
+#macro>
+
diff --git a/webapp/src/main/webapp/templates/freemarker/lib/lib-meta-tags.ftl b/webapp/src/main/webapp/templates/freemarker/lib/lib-meta-tags.ftl
new file mode 100644
index 00000000..9887d09b
--- /dev/null
+++ b/webapp/src/main/webapp/templates/freemarker/lib/lib-meta-tags.ftl
@@ -0,0 +1,48 @@
+<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
+
+<#macro addCitationMetaTag uri content>
+ <#if metaTags?? && uri?? && content??>
+ <#switch uri>
+ <#case "http://vivoweb.org/ontology/core#Authorship">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://vivoweb.org/ontology/core#dateTimeValue">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/Journal">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/volume">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/issue">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/pageStart">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/pageEnd">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/doi">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/pmid">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/issn">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/isbn10">
+ ${metaTags.add("")}
+ <#break>
+ <#case "http://purl.org/ontology/bibo/isbn13">
+ ${metaTags.add("")}
+ <#break>
+ #switch>
+ #if>
+#macro>
+
+http://purl.org/ontology/bibo/volume
+http://purl.org/ontology/bibo/issue
+http://purl.org/ontology/bibo/pageStar
\ No newline at end of file
diff --git a/webapp/src/main/webapp/themes/wilma/templates/head.ftl b/webapp/src/main/webapp/themes/wilma/templates/head.ftl
index 520b06d0..bf093232 100644
--- a/webapp/src/main/webapp/themes/wilma/templates/head.ftl
+++ b/webapp/src/main/webapp/themes/wilma/templates/head.ftl
@@ -23,6 +23,10 @@
<#include "headScripts.ftl">
+<#if metaTags??>
+ ${metaTags.list()}
+#if>
+