NIHVIVO-144 Enable adding new primary or additional link from front end
This commit is contained in:
parent
6a6a9de920
commit
7f3ba68290
8 changed files with 386 additions and 102 deletions
|
@ -12,17 +12,21 @@ import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
|||
|
||||
public class FrontEndEditingUtils {
|
||||
|
||||
public static final List<String> VITRO_NS_PROPS_FOR_FRONT_END_EDITING = Arrays.asList(VitroVocabulary.BLURB,
|
||||
public static final List<String> VITRO_NS_DATAPROPS = Arrays.asList(VitroVocabulary.BLURB,
|
||||
VitroVocabulary.CITATION,
|
||||
VitroVocabulary.DESCRIPTION,
|
||||
VitroVocabulary.IMAGETHUMB,
|
||||
VitroVocabulary.LABEL,
|
||||
VitroVocabulary.LINK_ANCHOR,
|
||||
VitroVocabulary.MONIKER,
|
||||
VitroVocabulary.PRIMARY_LINK
|
||||
//, RDF_TYPE, TIMEKEY
|
||||
VitroVocabulary.MONIKER
|
||||
// VitroVocabulary.RDF_TYPE,
|
||||
// VitroVocabulary.TIMEKEY
|
||||
);
|
||||
|
||||
public static final List<String> VITRO_NS_OBJECT_PROPS = Arrays.asList(VitroVocabulary.ADDITIONAL_LINK,
|
||||
VitroVocabulary.PRIMARY_LINK
|
||||
);
|
||||
|
||||
|
||||
public static String getVitroNsPropDatatypeUri(String propName) {
|
||||
//Resource datatype = propName == TIMEKEY ? XSD.dateTime : XSD.xstring;
|
||||
//return datatype.getURI();
|
||||
|
|
|
@ -107,7 +107,6 @@ public class PropertyEditLinks extends TagSupport{
|
|||
Individual entity = (Individual)pageContext.getRequest().getAttribute("entity");
|
||||
|
||||
LinkStruct[] links = null;
|
||||
String themeDir = (String)pageContext.getAttribute("themeDir");
|
||||
|
||||
//get context prefix needs to end with a slash like "/vivo/" or "/"
|
||||
String contextPath = ((HttpServletRequest)pageContext.getRequest()).getContextPath();
|
||||
|
@ -118,27 +117,45 @@ public class PropertyEditLinks extends TagSupport{
|
|||
|
||||
if( item instanceof ObjectPropertyStatement ){
|
||||
ObjectPropertyStatement prop = (ObjectPropertyStatement)item;
|
||||
links = doObjPropStmt( prop, themeDir, policyToAccess(ids, policy, prop), contextPath );
|
||||
links = doObjPropStmt( prop, policyToAccess(ids, policy, prop), contextPath );
|
||||
} else if( item instanceof DataPropertyStatement ){
|
||||
DataPropertyStatement prop = (DataPropertyStatement)item;
|
||||
links = doDataPropStmt( prop, themeDir, policyToAccess(ids, policy, prop), contextPath );
|
||||
links = doDataPropStmt( prop, policyToAccess(ids, policy, prop), contextPath );
|
||||
} else if (entity == null) {
|
||||
log.error("unable to find an Individual in request using var name 'entity'");
|
||||
return SKIP_BODY;
|
||||
} else if( item instanceof ObjectProperty ){
|
||||
ObjectProperty prop = (ObjectProperty)item;
|
||||
links = doObjProp( prop, entity, themeDir, policyToAccess(ids, policy, entity.getURI(), prop), contextPath );
|
||||
links = doObjProp( prop, entity, policyToAccess(ids, policy, entity.getURI(), prop), contextPath );
|
||||
} else if( item instanceof DataProperty ){
|
||||
DataProperty prop = (DataProperty)item; // a DataProperty populated for this subject individual
|
||||
links = doDataProp( prop, entity, themeDir,policyToAccess(ids, policy, entity.getURI(), prop), contextPath ) ;
|
||||
} else if (item instanceof String && isVitroNsProp((String) item)) {
|
||||
links = doDataProp( prop, entity, policyToAccess(ids, policy, entity.getURI(), prop),contextPath );
|
||||
|
||||
// Vitro namespace property
|
||||
} else if (item instanceof String) {
|
||||
String predicateUri = (String) item;
|
||||
String subjectUri = entity.getURI();
|
||||
if (data != null) { // links to edit or delete an existing value
|
||||
DataPropertyStatement dps = (DataPropertyStatement) new DataPropertyStatementImpl(subjectUri, (String)item, data);
|
||||
links = doVitroNamespacePropStmt( dps, entity, themeDir, policyToAccess(ids, policy, dps), contextPath );
|
||||
} else { // link to add a new value
|
||||
links = doVitroNsProp( subjectUri, (String)item, themeDir, policyToAccess(ids, policy, subjectUri, (String)item), contextPath ) ;
|
||||
if (isVitroNsDataProp(predicateUri)) {
|
||||
if (data == null) { // link to add a new value
|
||||
links = doVitroNsDataProp( subjectUri, predicateUri, policyToAccess(ids, policy, subjectUri, predicateUri), contextPath );
|
||||
} else { // links to edit or delete an existing value
|
||||
DataPropertyStatement dps = (DataPropertyStatement) new DataPropertyStatementImpl(subjectUri, predicateUri, data);
|
||||
links = doVitroNsDataPropStmt( dps, entity, policyToAccess(ids, policy, dps), contextPath );
|
||||
}
|
||||
} else if (isVitroNsObjectProp(predicateUri)) {
|
||||
if (data == null) { // link to add a new value
|
||||
links = doObjProp( subjectUri, predicateUri, policyToAccess(ids, policy, subjectUri, predicateUri), contextPath );
|
||||
} else { // links to edit or delete an existing value
|
||||
DataPropertyStatement dps = (DataPropertyStatement) new DataPropertyStatementImpl(subjectUri, predicateUri, data);
|
||||
//links = doVitroNsObjPropStmt( dps, entity, policyToAccess(ids, policy, dps), contextPath );
|
||||
}
|
||||
}
|
||||
else {
|
||||
log.error("PropertyEditLinks cannot make links for an object of type " + predicateUri);
|
||||
return SKIP_BODY;
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
log.error("PropertyEditLinks cannot make links for an object of type "+item.getClass().getName());
|
||||
return SKIP_BODY;
|
||||
|
@ -164,7 +181,7 @@ public class PropertyEditLinks extends TagSupport{
|
|||
return SKIP_BODY;
|
||||
}
|
||||
|
||||
protected LinkStruct[] doDataProp(DataProperty dprop, Individual entity, String themeDir, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
protected LinkStruct[] doDataProp(DataProperty dprop, Individual entity, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
if( allowedAccessTypeArray == null || dprop == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.debug("null or empty access type array in doDataProp for dprop "+dprop.getPublicName()+"; most likely just a property prohibited from editing");
|
||||
return empty_array;
|
||||
|
@ -191,7 +208,7 @@ public class PropertyEditLinks extends TagSupport{
|
|||
return links;
|
||||
}
|
||||
|
||||
protected LinkStruct[] doVitroNsProp(String subjectUri, String propertyUri, String themeDir, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
protected LinkStruct[] doVitroNsDataProp(String subjectUri, String propertyUri, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
if( allowedAccessTypeArray == null || subjectUri == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.debug("null or empty access type array in doDataProp for vitro namespace property " + propertyUri + "; most likely just a property prohibited from editing");
|
||||
return empty_array;
|
||||
|
@ -229,18 +246,29 @@ public class PropertyEditLinks extends TagSupport{
|
|||
return links;
|
||||
}
|
||||
|
||||
|
||||
protected LinkStruct[] doObjProp(ObjectProperty oprop, Individual entity, String themeDir, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
// Used for ontology object properties
|
||||
protected LinkStruct[] doObjProp(ObjectProperty oprop, Individual entity, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
if( allowedAccessTypeArray == null || oprop == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.debug("null or empty access type array in doObjProp for oprop "+oprop.getDomainPublic()+"; most likely just a property prohibited from editing");
|
||||
return empty_array;
|
||||
}
|
||||
|
||||
return doObjProp(entity.getURI(), oprop.getURI(), allowedAccessTypeArray, contextPath);
|
||||
}
|
||||
|
||||
// Used for Vitro namespace object properties
|
||||
protected LinkStruct[] doObjProp(String subjectUri, String predicateUri, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
if( allowedAccessTypeArray == null || subjectUri == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.debug("null or empty access type array in doObjProp for oprop "+ predicateUri +"; most likely just a property prohibited from editing");
|
||||
return empty_array;
|
||||
}
|
||||
LinkStruct[] links = new LinkStruct[1];
|
||||
|
||||
if( contains( allowedAccessTypeArray, EditLinkAccess.ADDNEW )){
|
||||
|
||||
String url= makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
"subjectUri", entity.getURI(),
|
||||
"predicateUri", oprop.getURI());
|
||||
"subjectUri", subjectUri,
|
||||
"predicateUri", predicateUri);
|
||||
LinkStruct ls = new LinkStruct();
|
||||
ls.setHref( url );
|
||||
ls.setType("add");
|
||||
|
@ -250,7 +278,7 @@ public class PropertyEditLinks extends TagSupport{
|
|||
return links;
|
||||
}
|
||||
|
||||
protected LinkStruct[] doDataPropStmt(DataPropertyStatement dpropStmt, String themeDir, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
protected LinkStruct[] doDataPropStmt(DataPropertyStatement dpropStmt, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
if( allowedAccessTypeArray == null || dpropStmt == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.info("null or empty access type array in doDataPropStmt for "+dpropStmt.getDatapropURI());
|
||||
return empty_array;
|
||||
|
@ -300,56 +328,7 @@ public class PropertyEditLinks extends TagSupport{
|
|||
return links;
|
||||
}
|
||||
|
||||
protected LinkStruct[] doObjPropStmt(ObjectPropertyStatement opropStmt, String themeDir2, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
if( allowedAccessTypeArray == null || opropStmt == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.info("null or empty access type array in doObjPropStmt for "+opropStmt.getPropertyURI());
|
||||
return empty_array;
|
||||
}
|
||||
LinkStruct[] links = new LinkStruct[2];
|
||||
int index=0;
|
||||
|
||||
if( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
|
||||
log.debug("permission found to UPDATE object property statement "+opropStmt.getPropertyURI()+" so icon created");
|
||||
String url = ( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) )
|
||||
? makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
"subjectUri", opropStmt.getSubjectURI(),
|
||||
"predicateUri", opropStmt.getPropertyURI(),
|
||||
"objectUri", opropStmt.getObjectURI())
|
||||
: makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
"subjectUri", opropStmt.getSubjectURI(),
|
||||
"predicateUri", opropStmt.getPropertyURI(),
|
||||
"objectUri", opropStmt.getObjectURI(),
|
||||
"deleteProhibited", "prohibited");
|
||||
|
||||
LinkStruct ls = new LinkStruct();
|
||||
ls.setHref( url );
|
||||
ls.setType("edit");
|
||||
ls.setMouseoverText("change this relationship");
|
||||
links[index] = ls; index++;
|
||||
|
||||
} else {
|
||||
log.debug("NO permission to UPDATE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
|
||||
}
|
||||
if( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) ){
|
||||
log.debug("permission found to DELETE object property statement "+opropStmt.getPropertyURI()+" so icon created");
|
||||
String url = makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
"subjectUri", opropStmt.getSubjectURI(),
|
||||
"predicateUri", opropStmt.getPropertyURI(),
|
||||
"objectUri", opropStmt.getObjectURI(),
|
||||
"cmd", "delete");
|
||||
LinkStruct ls = new LinkStruct();
|
||||
ls.setHref( url );
|
||||
ls.setType("delete");
|
||||
ls.setMouseoverText("delete this relationship");
|
||||
links[index] = ls; index++;
|
||||
|
||||
} else {
|
||||
log.debug("NO permission to DELETE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
|
||||
}
|
||||
return links;
|
||||
}
|
||||
|
||||
protected LinkStruct[] doVitroNamespacePropStmt(DataPropertyStatement dpropStmt, Individual subject, String themeDir, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
protected LinkStruct[] doVitroNsDataPropStmt(DataPropertyStatement dpropStmt, Individual subject, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
|
||||
if( allowedAccessTypeArray == null || dpropStmt == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.debug("Null or empty access type array for vitro namespace property " + dpropStmt.getDatapropURI());
|
||||
|
@ -432,6 +411,105 @@ public class PropertyEditLinks extends TagSupport{
|
|||
return links;
|
||||
}
|
||||
|
||||
protected LinkStruct[] doObjPropStmt(ObjectPropertyStatement opropStmt, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
if( allowedAccessTypeArray == null || opropStmt == null || allowedAccessTypeArray.length == 0 ) {
|
||||
log.info("null or empty access type array in doObjPropStmt for "+opropStmt.getPropertyURI());
|
||||
return empty_array;
|
||||
}
|
||||
LinkStruct[] links = new LinkStruct[2];
|
||||
int index=0;
|
||||
|
||||
if( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
|
||||
log.debug("permission found to UPDATE object property statement "+opropStmt.getPropertyURI()+" so icon created");
|
||||
String url = ( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) )
|
||||
? makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
"subjectUri", opropStmt.getSubjectURI(),
|
||||
"predicateUri", opropStmt.getPropertyURI(),
|
||||
"objectUri", opropStmt.getObjectURI())
|
||||
: makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
"subjectUri", opropStmt.getSubjectURI(),
|
||||
"predicateUri", opropStmt.getPropertyURI(),
|
||||
"objectUri", opropStmt.getObjectURI(),
|
||||
"deleteProhibited", "prohibited");
|
||||
|
||||
LinkStruct ls = new LinkStruct();
|
||||
ls.setHref( url );
|
||||
ls.setType("edit");
|
||||
ls.setMouseoverText("change this relationship");
|
||||
links[index] = ls; index++;
|
||||
|
||||
} else {
|
||||
log.debug("NO permission to UPDATE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
|
||||
}
|
||||
if( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) ){
|
||||
log.debug("permission found to DELETE object property statement "+opropStmt.getPropertyURI()+" so icon created");
|
||||
String url = makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
"subjectUri", opropStmt.getSubjectURI(),
|
||||
"predicateUri", opropStmt.getPropertyURI(),
|
||||
"objectUri", opropStmt.getObjectURI(),
|
||||
"cmd", "delete");
|
||||
LinkStruct ls = new LinkStruct();
|
||||
ls.setHref( url );
|
||||
ls.setType("delete");
|
||||
ls.setMouseoverText("delete this relationship");
|
||||
links[index] = ls; index++;
|
||||
|
||||
} else {
|
||||
log.debug("NO permission to DELETE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
|
||||
}
|
||||
return links;
|
||||
}
|
||||
|
||||
// protected LinkStruct[] doObjPropStmt(ObjectPropertyStatement opropStmt, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
|
||||
// if( allowedAccessTypeArray == null || opropStmt == null || allowedAccessTypeArray.length == 0 ) {
|
||||
// log.info("null or empty access type array in doObjPropStmt for "+opropStmt.getPropertyURI());
|
||||
// return empty_array;
|
||||
// }
|
||||
// LinkStruct[] links = new LinkStruct[2];
|
||||
// int index=0;
|
||||
//
|
||||
// if( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
|
||||
// log.debug("permission found to UPDATE object property statement "+opropStmt.getPropertyURI()+" so icon created");
|
||||
// String url = ( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) )
|
||||
// ? makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
// "subjectUri", opropStmt.getSubjectURI(),
|
||||
// "predicateUri", opropStmt.getPropertyURI(),
|
||||
// "objectUri", opropStmt.getObjectURI())
|
||||
// : makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
// "subjectUri", opropStmt.getSubjectURI(),
|
||||
// "predicateUri", opropStmt.getPropertyURI(),
|
||||
// "objectUri", opropStmt.getObjectURI(),
|
||||
// "deleteProhibited", "prohibited");
|
||||
//
|
||||
// LinkStruct ls = new LinkStruct();
|
||||
// ls.setHref( url );
|
||||
// ls.setType("edit");
|
||||
// ls.setMouseoverText("change this relationship");
|
||||
// links[index] = ls; index++;
|
||||
//
|
||||
// } else {
|
||||
// log.debug("NO permission to UPDATE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
|
||||
// }
|
||||
// if( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) ){
|
||||
// log.debug("permission found to DELETE object property statement "+opropStmt.getPropertyURI()+" so icon created");
|
||||
// String url = makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
|
||||
// "subjectUri", opropStmt.getSubjectURI(),
|
||||
// "predicateUri", opropStmt.getPropertyURI(),
|
||||
// "objectUri", opropStmt.getObjectURI(),
|
||||
// "cmd", "delete");
|
||||
// LinkStruct ls = new LinkStruct();
|
||||
// ls.setHref( url );
|
||||
// ls.setType("delete");
|
||||
// ls.setMouseoverText("delete this relationship");
|
||||
// links[index] = ls; index++;
|
||||
//
|
||||
// } else {
|
||||
// log.debug("NO permission to DELETE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
|
||||
// }
|
||||
// return links;
|
||||
// }
|
||||
|
||||
|
||||
/* ********************* utility methods ********************************* */
|
||||
protected static String makeRelativeHref( String baseUrl, String ... queries ) {
|
||||
String href = baseUrl;
|
||||
|
@ -599,8 +677,12 @@ public class PropertyEditLinks extends TagSupport{
|
|||
}
|
||||
|
||||
|
||||
private boolean isVitroNsProp(String predicateUri) {
|
||||
return FrontEndEditingUtils.VITRO_NS_PROPS_FOR_FRONT_END_EDITING.contains(predicateUri);
|
||||
private boolean isVitroNsDataProp(String predicateUri) {
|
||||
return FrontEndEditingUtils.VITRO_NS_DATAPROPS.contains(predicateUri);
|
||||
}
|
||||
|
||||
private boolean isVitroNsObjectProp(String predicateUri) {
|
||||
return FrontEndEditingUtils.VITRO_NS_OBJECT_PROPS.contains(predicateUri);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
************************************** */
|
||||
|
||||
final String DEFAULT_DATA_FORM = "defaultDatapropForm.jsp";
|
||||
final String DEFAULT_VITRO_NS_FORM = "defaultVitroNsPropForm.jsp";
|
||||
final String DEFAULT_VITRO_NS_FORM = "defaultVitroNsDataPropForm.jsp";
|
||||
final String DEFAULT_ERROR_FORM = "error.jsp";
|
||||
|
||||
if (!VitroRequestPrep.isSelfEditing(request) && !LoginFormBean.loggedIn(request, LoginFormBean.NON_EDITOR)) {
|
||||
|
|
|
@ -236,6 +236,7 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
%>
|
||||
<jsp:forward page="/edit/forms/${form}" />
|
||||
|
||||
|
||||
<%!
|
||||
|
||||
private static synchronized void setEditReferer(String editKey, String refererUrl, HttpSession session) {
|
||||
|
|
|
@ -9,14 +9,25 @@
|
|||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataProperty" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.DataPropertyDao" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary"%>
|
||||
|
||||
<%@ page import="java.util.List" %>
|
||||
|
||||
<%@ page import="org.apache.commons.logging.Log" %>
|
||||
<%@ page import="org.apache.commons.logging.LogFactory" %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
|
||||
<%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %>
|
||||
<%!
|
||||
public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.forms.defaultLinkForm.jsp");
|
||||
%>
|
||||
<%
|
||||
String predicateUri = (String)request.getAttribute("predicateUri");
|
||||
%>
|
||||
|
||||
<c:set var="vitroUri" value="<%= VitroVocabulary.vitroURI %>" />
|
||||
<c:set var="rdfUri" value="<%= VitroVocabulary.RDF %>" />
|
||||
|
||||
<%-- Enter here any class names to be used for constructing INDIVIDUALS_VIA_VCLASS pick lists
|
||||
These are then referenced in the field's ObjectClassUri but not elsewhere.
|
||||
NOTE that this class may not exist in the model, in which the only choice of type
|
||||
|
@ -28,7 +39,7 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
Each of these must then be referenced in the sparqlForExistingLiterals section of the JSON block below
|
||||
and in the literalsOnForm --%>
|
||||
<v:jsonset var="urlExisting" >
|
||||
PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#>
|
||||
PREFIX vitro: <${vitroUri}> .
|
||||
SELECT ?urlExisting
|
||||
WHERE { ?link vitro:linkURL ?urlExisting }
|
||||
</v:jsonset>
|
||||
|
@ -36,17 +47,17 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
The actual assertion inserted in the model will be created via string substitution into the ? variables.
|
||||
NOTE the pattern of punctuation (a period after the prefix URI and after the ?field) --%>
|
||||
<v:jsonset var="urlAssertion" >
|
||||
@prefix vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> .
|
||||
@prefix vitro: <${vitroUri}> .
|
||||
?link vitro:linkURL ?url .
|
||||
</v:jsonset>
|
||||
|
||||
<v:jsonset var="anchorExisting" >
|
||||
PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#>
|
||||
PREFIX vitro: <${vitroUri}> .
|
||||
SELECT ?anchorExisting
|
||||
WHERE { ?link vitro:linkAnchor ?anchorExisting }
|
||||
</v:jsonset>
|
||||
<v:jsonset var="anchorAssertion" >
|
||||
@prefix vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> .
|
||||
@prefix vitro: <${vitroUri}> .
|
||||
?link vitro:linkAnchor ?anchor .
|
||||
</v:jsonset>
|
||||
|
||||
|
@ -54,11 +65,10 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
the SparqlForExistingUris --%>
|
||||
|
||||
<v:jsonset var="n3ForEdit">
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
||||
@prefix vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> .
|
||||
@prefix rdf: <${rdfUri}> .
|
||||
@prefix vitro: <${vitroUri}> .
|
||||
|
||||
?subject vitro:additionalLink ?link .
|
||||
?subject <${predicateUri}> ?link .
|
||||
|
||||
?link rdf:type vitro:Link .
|
||||
|
||||
|
@ -69,7 +79,7 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
</v:jsonset>
|
||||
|
||||
<v:jsonset var="n3Optional">
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
@prefix rdf: <${rdfUri}> .
|
||||
|
||||
?link rdf:type ?type .
|
||||
</v:jsonset>
|
||||
|
@ -126,6 +136,8 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
}
|
||||
</c:set>
|
||||
<%
|
||||
log.debug(request.getAttribute("editjson"));
|
||||
|
||||
EditConfiguration editConfig = EditConfiguration.getConfigFromSession(session,request);
|
||||
if( editConfig == null ){
|
||||
editConfig = new EditConfiguration((String)request.getAttribute("editjson"));
|
||||
|
@ -143,13 +155,14 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
/* get some data to make the form more useful */
|
||||
Individual subject = (Individual)request.getAttribute("subject");
|
||||
|
||||
String submitLabel=""; // don't put local variables into the request
|
||||
/* title is used by pre and post form fragments */
|
||||
String submitLabel="";
|
||||
String title="";
|
||||
String linkType = predicateUri.equals(VitroVocabulary.PRIMARY_LINK) ? "primary" : "additional";
|
||||
if (objectUri != null) {
|
||||
request.setAttribute("title", "Edit link for " + subject.getName());
|
||||
title = "Edit <em>" + linkType + " link</em> for " + subject.getName();
|
||||
submitLabel = "Save changes";
|
||||
} else {
|
||||
request.setAttribute("title","Create a new link for " + subject.getName());
|
||||
title = "Create a new <em>" + linkType + " link</em> for " + subject.getName();
|
||||
submitLabel = "Create new link";
|
||||
}
|
||||
|
||||
|
@ -157,11 +170,11 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
|||
|
||||
<jsp:include page="${preForm}"/>
|
||||
|
||||
<h2>${title}</h2>
|
||||
<h2><%= title %></h2>
|
||||
<form action="<c:url value="/edit/processRdfForm2.jsp"/>" >
|
||||
<v:input type="text" label="URL" id="url" size="70"/>
|
||||
<v:input type="text" label="label" id="anchor" size="60"/>
|
||||
<v:input type="submit" id="submit" value="<%=submitLabel%>" cancel="${param.subjectUri}"/>
|
||||
<v:input type="text" label="Link anchor text" id="anchor" size="60"/>
|
||||
<p class="submit"><v:input type="submit" id="submit" value="<%=submitLabel%>" cancel="${param.subjectUri}"/></p>
|
||||
</form>
|
||||
|
||||
<jsp:include page="${postForm}"/>
|
||||
|
|
176
webapp/web/edit/forms/defaultLinkForm.new.jsp
Normal file
176
webapp/web/edit/forms/defaultLinkForm.new.jsp
Normal file
|
@ -0,0 +1,176 @@
|
|||
<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%>
|
||||
|
||||
<%@ page import="com.hp.hpl.jena.rdf.model.Literal" %>
|
||||
<%@ page import="com.hp.hpl.jena.rdf.model.Model" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Individual" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.VClass" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.EditConfiguration" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataProperty" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.DataPropertyDao" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary" %>
|
||||
|
||||
<%@ page import="java.util.List" %>
|
||||
|
||||
<%@ page import="org.apache.commons.logging.Log" %>
|
||||
<%@ page import="org.apache.commons.logging.LogFactory" %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
|
||||
<%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %>
|
||||
<%!
|
||||
public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.forms.defaultLinkForm.jsp");
|
||||
%>
|
||||
|
||||
<c:set var="vitroUri" value="<%= VitroVocabulary.vitroURI %>" />
|
||||
<c:set var="rdfUri" value="<%= VitroVocabulary.RDF %>" />
|
||||
<c:set var="rdfsUri" value="<%= VitroVocabulary.RDFS %>" />
|
||||
|
||||
<%-- Enter here any class names to be used for constructing INDIVIDUALS_VIA_VCLASS pick lists
|
||||
These are then referenced in the field's ObjectClassUri but not elsewhere.
|
||||
NOTE that this class may not exist in the model, in which the only choice of type
|
||||
that will show up is "web page", which will insert no new statements and just create
|
||||
links of type vitro:Link --%>
|
||||
|
||||
<%-- Then enter a SPARQL query for each field, by convention concatenating the field id with "Existing"
|
||||
to convey that the expression is used to retrieve any existing value for the field in an existing individual.
|
||||
Each of these must then be referenced in the sparqlForExistingLiterals section of the JSON block below
|
||||
and in the literalsOnForm --%>
|
||||
<v:jsonset var="urlExisting" >
|
||||
SELECT ?urlExisting
|
||||
WHERE { ?link <${predicateUri}> ?urlExisting }
|
||||
</v:jsonset>
|
||||
<%-- Pair the "existing" query with the skeleton of what will be asserted for a new statement involving this field.
|
||||
The actual assertion inserted in the model will be created via string substitution into the ? variables.
|
||||
NOTE the pattern of punctuation (a period after the prefix URI and after the ?field) --%>
|
||||
<v:jsonset var="urlAssertion" >
|
||||
?link <${predicateUri}> ?url .
|
||||
</v:jsonset>
|
||||
|
||||
<v:jsonset var="anchorExisting" >
|
||||
PREFIX vitro: <${vitroUri}>
|
||||
SELECT ?anchorExisting
|
||||
WHERE { ?link vitro:linkAnchor ?anchorExisting }
|
||||
</v:jsonset>
|
||||
<v:jsonset var="anchorAssertion" >
|
||||
@prefix vitro: <${vitroUri}> .
|
||||
?link vitro:linkAnchor ?anchor .
|
||||
</v:jsonset>
|
||||
|
||||
<%-- When not retrieving a literal via a datatype property, put the SPARQL statement into
|
||||
the SparqlForExistingUris --%>
|
||||
|
||||
<v:jsonset var="n3ForEdit">
|
||||
@prefix rdf: <${rdfUri}> .
|
||||
@prefix vitro: <${vitroUri}> .
|
||||
|
||||
?subject <${predicateUri}> ?link .
|
||||
|
||||
?link rdf:type vitro:Link .
|
||||
|
||||
?link
|
||||
vitro:linkURL ?url ;
|
||||
vitro:linkAnchor ?anchor .
|
||||
|
||||
</v:jsonset>
|
||||
|
||||
<v:jsonset var="n3Optional">
|
||||
@prefix rdf: <${rdfUri}> .
|
||||
|
||||
?link rdf:type ?type .
|
||||
</v:jsonset>
|
||||
|
||||
<c:set var="editjson" scope="request">
|
||||
{
|
||||
"formUrl" : "${formUrl}",
|
||||
"editKey" : "${editKey}",
|
||||
"urlPatternToReturnTo" : "/entity",
|
||||
|
||||
"subject" : ["subject", "${subjectUriJson}" ],
|
||||
"predicate" : ["predicate", "${predicateUriJson}" ],
|
||||
"object" : ["link", "${objectUriJson}", "URI" ],
|
||||
|
||||
"n3required" : [ "${n3ForEdit}" ],
|
||||
"n3optional" : [ "${n3Optional}" ],
|
||||
"newResources" : { },
|
||||
"urisInScope" : { },
|
||||
"literalsInScope" : { },
|
||||
"urisOnForm" : [ ],
|
||||
"literalsOnForm" : [ "url", "anchor" ],
|
||||
"filesOnForm" : [ ],
|
||||
"sparqlForLiterals" : { },
|
||||
"sparqlForUris" : { },
|
||||
"sparqlForExistingLiterals" : {
|
||||
"url" : "${urlExisting}",
|
||||
"anchor" : "${anchorExisting}"
|
||||
},
|
||||
"sparqlForExistingUris" : { },
|
||||
"fields" : {
|
||||
"url" : {
|
||||
"newResource" : "false",
|
||||
"validators" : [ "nonempty" ],
|
||||
"optionsType" : "UNDEFINED",
|
||||
"literalOptions" : [ ],
|
||||
"predicateUri" : "",
|
||||
"objectClassUri" : "",
|
||||
"rangeDatatypeUri" : "",
|
||||
"rangeLang" : "",
|
||||
"assertions" : [ "${urlAssertion}" ]
|
||||
},
|
||||
"anchor" : {
|
||||
"newResource" : "false",
|
||||
"validators" : [ "nonempty" ],
|
||||
"optionsType" : "UNDEFINED",
|
||||
"literalOptions" : [ ],
|
||||
"predicateUri" : "",
|
||||
"objectClassUri" : "",
|
||||
"rangeDatatypeUri" : "",
|
||||
"rangeLang" : "",
|
||||
"assertions" : [ "${anchorAssertion}" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
</c:set>
|
||||
<%
|
||||
log.debug(request.getAttribute("editjson"));
|
||||
|
||||
EditConfiguration editConfig = EditConfiguration.getConfigFromSession(session,request);
|
||||
if( editConfig == null ){
|
||||
editConfig = new EditConfiguration((String)request.getAttribute("editjson"));
|
||||
EditConfiguration.putConfigInSession(editConfig, session);
|
||||
}
|
||||
|
||||
|
||||
Model model = (Model)application.getAttribute("jenaOntModel");
|
||||
String objectUri = (String)request.getAttribute("objectUri");
|
||||
if( objectUri != null ){
|
||||
editConfig.prepareForObjPropUpdate(model);
|
||||
}else{
|
||||
editConfig.prepareForNonUpdate(model);
|
||||
}
|
||||
|
||||
/* get some data to make the form more useful */
|
||||
Individual subject = (Individual)request.getAttribute("subject");
|
||||
|
||||
String submitLabel="";
|
||||
String title = "";
|
||||
if (objectUri != null) {
|
||||
title = "Edit <em>url</em> for " + subject.getName();
|
||||
submitLabel = "Save changes";
|
||||
} else {
|
||||
title = "Create a new <em>url</em> for " + subject.getName();
|
||||
submitLabel = "Create new url";
|
||||
}
|
||||
|
||||
%>
|
||||
|
||||
<jsp:include page="${preForm}"/>
|
||||
|
||||
<h2><%= title %></h2>
|
||||
<form action="<c:url value="/edit/processRdfForm2.jsp"/>" >
|
||||
<v:input type="text" label="URL" id="url" size="70"/>
|
||||
<v:input type="text" label="Anchor text" id="anchor" size="60"/><br />
|
||||
<v:input type="submit" id="submit" value="<%=submitLabel%>" cancel="${param.subjectUri}"/>
|
||||
</form>
|
||||
|
||||
<jsp:include page="${postForm}"/>
|
|
@ -149,11 +149,19 @@ RY Description not working - FIX
|
|||
</div> <!-- end labelAndMoniker -->
|
||||
|
||||
<%-- Links --%>
|
||||
<c:if test="${ showEdits || !empty entity.anchor || !empty entity.linksList }">
|
||||
<div id="dprop-vitro-link" class="propsItem ${editingClass}">
|
||||
<c:if test="${ showEdits || !empty entity.url || !empty entity.linksList }">
|
||||
<div id="dprop-vitro-urls" class="propsItem ${editingClass}">
|
||||
<c:if test="${showEdits}">
|
||||
<h3 class="propertyName">links</h3>
|
||||
<edLnk:editLinks item="<%= VitroVocabulary.LINK_ANCHOR %>" icons="false" />
|
||||
<c:choose>
|
||||
<c:when test="${empty entity.url}">
|
||||
<c:set var="addUrlPredicate" value="<%= VitroVocabulary.PRIMARY_LINK %>" />
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="addUrlPredicate" value="<%= VitroVocabulary.ADDITIONAL_LINK %>" />
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<edLnk:editLinks item="${addUrlPredicate}" icons="false" />
|
||||
</c:if>
|
||||
<div class="datatypeProperties">
|
||||
<div class="datatypePropertyValue">
|
||||
|
|
Loading…
Add table
Reference in a new issue