diff --git a/webapp/languages/es_GO/i18n/all_es_GO.properties b/webapp/languages/es_GO/i18n/all_es_GO.properties index 729f99311..b9c22edf6 100644 --- a/webapp/languages/es_GO/i18n/all_es_GO.properties +++ b/webapp/languages/es_GO/i18n/all_es_GO.properties @@ -793,7 +793,7 @@ august = Agosto september = Septiembre october = Octubre november = Noviembre - +december = Deciembre # # miscellaneous javascript variables ( webapp/web/js) # diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DatatypeDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DatatypeDaoJena.java index c0d31c9ee..54eff6c91 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DatatypeDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DatatypeDaoJena.java @@ -99,6 +99,13 @@ public class DatatypeDaoJena extends JenaBaseDao implements DatatypeDao { allDatatypes.add(integerD); allDatatypesMap.put(integerD.getUri(), integerD); + Datatype floatD = new Datatype(); + floatD.setUri(XSD+"float"); + floatD.setName("float"); + floatD.setId(index++); + allDatatypes.add(floatD); + allDatatypesMap.put(floatD.getUri(), floatD); + Datatype dateTimeD = new Datatype(); dateTimeD.setUri(XSD+"dateTime"); dateTimeD.setName("date and time (YYYY-MM-DDThh:mm:ss)"); diff --git a/webapp/web/i18n/all.properties b/webapp/web/i18n/all.properties index 8c6f914be..2ad69da30 100644 --- a/webapp/web/i18n/all.properties +++ b/webapp/web/i18n/all.properties @@ -806,7 +806,7 @@ august = August september = September october = October november = November - +december = December # # miscellaneous javascript variables ( webapp/web/js) # diff --git a/webapp/web/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl b/webapp/web/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl index 2d72b0056..436beb433 100644 --- a/webapp/web/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl +++ b/webapp/web/templates/freemarker/body/partials/individual/propStatement-dataDefault.ftl @@ -5,7 +5,7 @@ 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> <@showStatement statement /> <#macro showStatement statement> @@ -19,10 +19,18 @@ <#if theValue?contains("

") > <#assign theValue = theValue?replace("

","

") /> - ${theValue} - - - - - - + <#if theValue?matches("^(10-20)\\d\\d[- \\/.](0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])$") > + <#assign theValue = theValue + "T00:00:00" /> + ${dt.formatXsdDateTimeLong(theValue, "yearMonthDayPrecision")} + <#elseif theValue?matches("^(10-20)\\d{2}(-|\\/)((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])")> + ${dt.formatXsdDateTimeLong(theValue, "yearMonthDayTimePrecision")} + <#elseif theValue?matches("^((10-20)\\d\\d+)-(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} + + \ No newline at end of file diff --git a/webapp/web/templates/freemarker/edit/forms/dateTimeEntryForm.ftl b/webapp/web/templates/freemarker/edit/forms/dateTimeEntryForm.ftl new file mode 100644 index 000000000..bf88983c4 --- /dev/null +++ b/webapp/web/templates/freemarker/edit/forms/dateTimeEntryForm.ftl @@ -0,0 +1,223 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + +

+ + <#if datatype?contains("#date") || datatype?contains("Year") > + + + + <#if datatype?contains("#date") || datatype?contains("Month") > + + + + <#if datatype?contains("#date") > + + + + <#if datatype?contains("#dateTime") || datatype?contains("#time") > + + + + + + + + + +
+ diff --git a/webapp/web/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl b/webapp/web/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl index f542b2286..64b7e2dde 100644 --- a/webapp/web/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl +++ b/webapp/web/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl @@ -23,6 +23,11 @@ <#assign literalValues = "${editConfiguration.dataLiteralValuesAsString}" /> +<#if editConfiguration.dataPredicateProperty.rangeDatatypeURI?? > + <#assign datatype = editConfiguration.dataPredicateProperty.rangeDatatypeURI /> +<#else> + <#assign datatype = "none" /> +
@@ -30,8 +35,41 @@ - - + <#if datatype = "http://www.w3.org/2001/XMLSchema#integer" || datatype = "http://www.w3.org/2001/XMLSchema#int"> + + <#elseif datatype = "http://www.w3.org/2001/XMLSchema#float"> + + <#elseif datatype = "http://www.w3.org/2001/XMLSchema#boolean"> + + <#elseif datatype = "http://www.w3.org/2001/XMLSchema#anyURI"> + + <#elseif datatype = "http://www.w3.org/2001/XMLSchema#dateTime" || + datatype = "http://www.w3.org/2001/XMLSchema#date" || + datatype = "http://www.w3.org/2001/XMLSchema#time" || + datatype = "http://www.w3.org/2001/XMLSchema#gYearMonth" || + datatype = "http://www.w3.org/2001/XMLSchema#gYear" || + datatype = "http://www.w3.org/2001/XMLSchema#gMonth" > + <#include "dateTimeEntryForm.ftl"> + <#else> + +
<#--The submit label should be set within the template itself, right now @@ -47,10 +85,14 @@ <#include "defaultDeletePropertyForm.ftl"> + + <#include "defaultFormScripts.ftl"> - +${stylesheets.add('')} + +${scripts.add('', + '')} + diff --git a/webapp/web/templates/freemarker/edit/forms/js/defaultDataPropertyUtils.js b/webapp/web/templates/freemarker/edit/forms/js/defaultDataPropertyUtils.js index ab72b4463..15eac97cb 100644 --- a/webapp/web/templates/freemarker/edit/forms/js/defaultDataPropertyUtils.js +++ b/webapp/web/templates/freemarker/edit/forms/js/defaultDataPropertyUtils.js @@ -6,7 +6,9 @@ var defaultDataPropertyUtils = { this.initObjectReferences(); this.bindEventListeners(); - + if ( $('#literal').val().length > 0 ) { + this.parseLiteralValue(); + } }, initObjectReferences: function() { @@ -14,27 +16,115 @@ var defaultDataPropertyUtils = { this.form = $('form.editForm'); this.textArea = $('textarea.useTinyMce'); + $.extend(this, datatype); + }, bindEventListeners: function() { this.form.submit(function() { - var theText = tinyMCE.get('literal').getContent(); - - if ( theText.indexOf("") > -1 ) { - var start = theText.indexOf("

") + 10); - var removeText = theText.slice(start,end); - var newText = theText.replace(removeText,""); - tinyMCE.get('literal').setContent(newText); - } - else if ( theText.indexOf("<!--") > -1 && theText.indexOf("-->") > -1 ) { - var start = theText.indexOf("

<!--"); - var end = (theText.indexOf("-->

") + 10); - var removeText = theText.slice(start,end); - var newText = theText.replace(removeText,""); - tinyMCE.get('literal').setContent(newText); - } + if ( defaultDataPropertyUtils.textArea.length ) { + var theText = tinyMCE.get('literal').getContent(); + + if ( theText.indexOf("") > -1 ) { + var start = theText.indexOf("

") + 10); + var removeText = theText.slice(start,end); + var newText = theText.replace(removeText,""); + tinyMCE.get('literal').setContent(newText); + } + else if ( theText.indexOf("<!--") > -1 && theText.indexOf("-->") > -1 ) { + var start = theText.indexOf("

<!--"); + var end = (theText.indexOf("-->

") + 10); + var removeText = theText.slice(start,end); + var newText = theText.replace(removeText,""); + tinyMCE.get('literal').setContent(newText); + } + } + else { + defaultDataPropertyUtils.createLiteralValue(); + } }); }, -} + + createLiteralValue: function() { + var theType = datatype.substring(datatype.lastIndexOf("#") + 1); + var temp = ""; + + switch (theType) { + case 'date': + temp = $('#dateTimeField-year').val() + "-" + + $('#dateTimeField-month').val() + "-" + + $('#dateTimeField-day').val(); + $('#literal').val(temp); + break; + case 'dateTime': + temp = $('#dateTimeField-year').val() + "-" + + $('#dateTimeField-month').val() + "-" + + $('#dateTimeField-day').val() + "T" + + $('#dateTimeField-hour').val() + ":" + + $('#dateTimeField-minute').val() + ":" + + $('#dateTimeField-second').val(); + $('#literal').val(temp); + break; + case 'time': + temp = $('#dateTimeField-hour').val() + ":" + + $('#dateTimeField-minute').val() + ":" + + $('#dateTimeField-second').val(); + $('#literal').val(temp); + break; + case 'gYear': + $('#literal').val($('#dateTimeField-year').val()); + break; + case 'gYearMonth': + temp = $('#dateTimeField-year').val() + "-" + $('#dateTimeField-month').val(); + $('#literal').val(temp); + break; + case 'gMonth': + temp = "--" + $('#dateTimeField-month').val() + $('input#literal').val(temp); + break; + } + }, + + parseLiteralValue: function() { + var theType = datatype.substring(datatype.lastIndexOf("#") + 1); + var temp = $('#literal').val(); + + switch (theType) { + case 'date': + $('#dateTimeField-year').val(temp.substring(0, temp.indexOf("-"))); + $('#dateTimeField-month').val(temp.substring(temp.indexOf("-")+1,temp.lastIndexOf("-"))); + $('#dateTimeField-day').val(temp.substring(temp.lastIndexOf("-")+1)); + break; + case 'dateTime': + $('#dateTimeField-year').val(temp.substring(0, temp.indexOf("-"))); + $('#dateTimeField-month').val(temp.substring(temp.indexOf("-")+1,temp.lastIndexOf("-"))); + $('#dateTimeField-day').val(temp.substring(temp.lastIndexOf("-")+1,temp.indexOf("T"))); + $('#dateTimeField-hour').val(temp.substring(temp.indexOf("T")+1,temp.indexOf(":"))); + $('#dateTimeField-minute').val(temp.substring(temp.indexOf(":")+1,temp.lastIndexOf(":"))); + $('#dateTimeField-second').val(temp.substring(temp.lastIndexOf(":")+1)); + break; + case 'time': + $('#dateTimeField-hour').val(temp.substring(0,temp.indexOf(":"))); + $('#dateTimeField-minute').val(temp.substring(temp.indexOf(":")+1,temp.lastIndexOf(":"))); + $('#dateTimeField-second').val(temp.substring(temp.lastIndexOf(":")+1)); + break; + case 'gYear': + $('#dateTimeField-year').val(temp); + break; + case 'gYearMonth': + $('#dateTimeField-year').val(temp.substring(0, temp.indexOf("-"))); + $('#dateTimeField-month').val(temp.substring(temp.indexOf("-")+1)); + break; + case 'gMonth': + $('#dateTimeField-month').val(temp.substring(temp.lastIndexOf("-")+1)); + break; + } + } + +} +$(document).ready(function(){ + defaultDataPropertyUtils.onLoad(); +}); + diff --git a/webapp/web/templates/freemarker/lib/lib-datetime.ftl b/webapp/web/templates/freemarker/lib/lib-datetime.ftl index d2a92bc29..0a96e41ef 100644 --- a/webapp/web/templates/freemarker/lib/lib-datetime.ftl +++ b/webapp/web/templates/freemarker/lib/lib-datetime.ftl @@ -161,6 +161,7 @@ <#if formatType == "long"> <#if precision?ends_with("yearPrecision")>yyyy <#elseif precision?ends_with("yearMonthPrecision")>MMMM yyyy + <#elseif precision?ends_with("monthPrecision")>MMMM <#elseif precision?ends_with("yearMonthDayPrecision")>MMMM d, yyyy <#else>MMMM d, yyyy h:mm a