From 129e1219a845f5514873399f026457092e7deebb Mon Sep 17 00:00:00 2001 From: Stefan-Wolff Date: Fri, 7 Dec 2018 15:14:36 +0100 Subject: [PATCH] [VIVO-1528] Select an editor for input fields based on annotation (#76) * provide WYSIWYG editor for range XMLLiteral only * Update defaultDataPropertyForm.ftl * add annotation based selection of the desired editor for editing values of datatype properties in the frontend * create new annotation vitro:editing to allow configuration of desired editor for editing of related dataproperties Resolves: https://jira.duraspace.org/browse/VIVO-1528 --- .../vitro/webapp/beans/DataProperty.java | 10 ++++++ .../vitro/webapp/dao/VitroVocabulary.java | 1 + .../webapp/dao/jena/DataPropertyDaoJena.java | 1 + .../vitro/webapp/dao/jena/JenaBaseDaoCon.java | 2 ++ .../rdf/tbox/filegraph/vitro-0.7.owl | 1 + .../edit/forms/defaultDataPropertyForm.ftl | 36 +++++++++---------- 6 files changed, 31 insertions(+), 20 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java index ddf931882..8b97fffa5 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/beans/DataProperty.java @@ -22,6 +22,8 @@ public class DataProperty extends Property implements Comparable, private String domainClassURI = null; private String rangeDatatypeURI = null; + private String editing = null; + private boolean functional = false; private String example = null; @@ -89,6 +91,14 @@ public class DataProperty extends Property implements Comparable, public void setRangeDatatypeURI(String rangeDatatypeURI) { this.rangeDatatypeURI = rangeDatatypeURI; } + + public void setEditing(String editing) { + this.editing = editing; + } + + public String getEditing() { + return this.editing; + } public boolean getFunctional() { return this.functional; diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java index 2cf3e4bfe..4f98179ba 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java @@ -46,6 +46,7 @@ public class VitroVocabulary { public static final String DESCRIPTION_ANNOT = vitroURI + "descriptionAnnot"; public static final String PUBLIC_DESCRIPTION_ANNOT = vitroURI + "publicDescriptionAnnot"; + public static final String EDITING = vitroURI + "editing"; public static final String SHORTDEF = "http://purl.obolibrary.org/obo/IAO_0000115"; public static final String EXAMPLE_ANNOT = "http://purl.obolibrary.org/obo/IAO_0000112"; diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java index 7592dd7ff..183862db9 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyDaoJena.java @@ -197,6 +197,7 @@ public class DataPropertyDaoJena extends PropertyDaoJena implements dp.setExample(getPropertyStringValue(op,EXAMPLE_ANNOT)); dp.setDescription(getPropertyStringValue(op,DESCRIPTION_ANNOT)); dp.setPublicDescription(getPropertyStringValue(op,PUBLIC_DESCRIPTION_ANNOT)); + dp.setEditing(getPropertyStringValue(op,EDITING)); dp.setDisplayTier((getWebappDaoFactory()).getJenaBaseDao().getPropertyNonNegativeIntValue(op, DISPLAY_RANK_ANNOT)); dp.setDisplayLimit((getWebappDaoFactory()).getJenaBaseDao().getPropertyNonNegativeIntValue(op, DISPLAY_LIMIT)); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java index 542a514d9..bd8425946 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java @@ -51,6 +51,8 @@ public class JenaBaseDaoCon { protected AnnotationProperty DESCRIPTION_ANNOT = _constModel.createAnnotationProperty(VitroVocabulary.DESCRIPTION_ANNOT); protected AnnotationProperty PUBLIC_DESCRIPTION_ANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PUBLIC_DESCRIPTION_ANNOT); protected AnnotationProperty SHORTDEF = _constModel.createAnnotationProperty(VitroVocabulary.SHORTDEF); + + protected AnnotationProperty EDITING = _constModel.createAnnotationProperty(VitroVocabulary.EDITING); protected DatatypeProperty MONIKER = _constModel.createDatatypeProperty(VitroVocabulary.MONIKER); protected OntClass CLASSGROUP = _constModel.createClass(VitroVocabulary.CLASSGROUP); diff --git a/home/src/main/resources/rdf/tbox/filegraph/vitro-0.7.owl b/home/src/main/resources/rdf/tbox/filegraph/vitro-0.7.owl index 6e9b89da6..8e9428535 100644 --- a/home/src/main/resources/rdf/tbox/filegraph/vitro-0.7.owl +++ b/home/src/main/resources/rdf/tbox/filegraph/vitro-0.7.owl @@ -36,6 +36,7 @@ xmlns:vitro="&vitro;" + diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl b/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl index a04e1834e..7e2093814 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/defaultDataPropertyForm.ftl @@ -23,28 +23,23 @@ <#assign literalValues = "${editConfiguration.dataLiteralValuesAsString}" /> -<#if editConfiguration.dataPredicateProperty.rangeDatatypeURI?? > - <#assign datatype = editConfiguration.dataPredicateProperty.rangeDatatypeURI /> -<#else> - <#assign datatype = "none" /> - +<#assign datatype = editConfiguration.dataPredicateProperty.rangeDatatypeURI!"none" />
<#if editConfiguration.dataPredicatePublicDescription?has_content> - - <#if datatype = "http://www.w3.org/2001/XMLSchema#integer" || datatype = "http://www.w3.org/2001/XMLSchema#int"> - + + <#if "HTML" == editConfiguration.dataPredicateProperty.editing!> + + + <#elseif 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" || @@ -67,8 +61,10 @@ datatype = "http://www.w3.org/2001/XMLSchema#gYear" || datatype = "http://www.w3.org/2001/XMLSchema#gMonth" > <#include "dateTimeEntryForm.ftl"> + <#else> - + +