diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/EditConfiguration.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/EditConfiguration.java
index 1db55a168..cc12b0ebe 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/EditConfiguration.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/EditConfiguration.java
@@ -87,7 +87,6 @@ public class EditConfiguration {
String entityToReturnTo;
String formUrl;
String editKey;
- boolean isVitroNsProp;
EditN3Generator n3generator;
private String originalJson;
@@ -169,9 +168,6 @@ public class EditConfiguration {
entityToReturnTo = subjectUri;
urlPatternToReturnTo = obj.getString("urlPatternToReturnTo");
-
- String vitroNsPropParam = obj.getString("isVitroNsProp");
- isVitroNsProp = vitroNsPropParam != null && vitroNsPropParam.equalsIgnoreCase("true");
JSONArray predicate = obj.getJSONArray("predicate");
if( predicate.length() != 2 )
@@ -514,14 +510,6 @@ public class EditConfiguration {
public void setUrlPatternToReturnTo(String s) {
urlPatternToReturnTo = s;
}
-
- public boolean isVitroNsProp() {
- return isVitroNsProp;
- }
-
- public void setIsVitroNsProp(boolean b) {
- isVitroNsProp = b;
- }
/** return a copy of the value so that the configuration is not modified by external code.
* @return
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/PropertyEditLinks.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/PropertyEditLinks.java
index 1f6e20314..f26d16f4a 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/PropertyEditLinks.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/PropertyEditLinks.java
@@ -327,14 +327,25 @@ public class PropertyEditLinks extends TagSupport{
int index = 0;
- if ( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
- log.debug("Permission found to UPDATE vitro namespace property " + predicateUri);
+ boolean deleteAllowed = ( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) &&
+ !( predicateUri.endsWith("#label") || predicateUri.endsWith("#type") ) );
+
+ if( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
+ log.debug("permission found to UPDATE vitro namepsace property statement "+ predicateUri);
LinkStruct ls = new LinkStruct();
- String url = makeRelativeHref(dispatchUrl,
- "subjectUri", subjectUri,
- "predicateUri", predicateUri,
- "datapropKey", dpropHash,
- "vitroNsProp", "true");
+ String url = deleteAllowed
+ ? makeRelativeHref(dispatchUrl,
+ "subjectUri", subjectUri,
+ "predicateUri", predicateUri,
+ "datapropKey", dpropHash,
+ "vitroNsProp", "true")
+ : makeRelativeHref(dispatchUrl,
+ "subjectUri", subjectUri,
+ "predicateUri", predicateUri,
+ "datapropKey", dpropHash,
+ "vitroNsProp", "true",
+ "deleteProhibited", "prohibited");
+
ls.setHref(url);
ls.setType("edit");
ls.setMouseoverText("edit this text");
@@ -346,24 +357,22 @@ public class PropertyEditLinks extends TagSupport{
}
// Name and type can be edited but not deleted
- if ( !( predicateUri.endsWith("#label") || predicateUri.endsWith("#type") ) ) {
- if ( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) ){
- LinkStruct ls = new LinkStruct();
- log.debug("Permission found to DELETE vitro namespace property " + predicateUri);
- String url = makeRelativeHref(dispatchUrl,
- "subjectUri", subjectUri,
- "predicateUri", predicateUri,
- "datapropKey", dpropHash,
- "vitroNsProp", "true");
- ls.setHref(url);
- ls.setType("delete");
- ls.setMouseoverText("delete this text");
- links[index] = ls;
- index++;
- }
- else {
- log.debug("NO permission found to DELETE vitro namespace property " + predicateUri);
- }
+ if ( deleteAllowed ) {
+ LinkStruct ls = new LinkStruct();
+ log.debug("Permission found to DELETE vitro namespace property " + predicateUri);
+ String url = makeRelativeHref(dispatchUrl,
+ "subjectUri", subjectUri,
+ "predicateUri", predicateUri,
+ "datapropKey", dpropHash,
+ "vitroNsProp", "true");
+ ls.setHref(url);
+ ls.setType("delete");
+ ls.setMouseoverText("delete this text");
+ links[index] = ls;
+ index++;
+ }
+ else {
+ log.debug("NO permission found to DELETE vitro namespace property " + predicateUri);
}
return links;
diff --git a/webapp/web/edit/editDatapropStmtRequestDispatch.jsp b/webapp/web/edit/editDatapropStmtRequestDispatch.jsp
index c3b232431..6ed5e241d 100644
--- a/webapp/web/edit/editDatapropStmtRequestDispatch.jsp
+++ b/webapp/web/edit/editDatapropStmtRequestDispatch.jsp
@@ -16,6 +16,9 @@
<%@ page import="java.util.HashMap" %>
<%@ page import="org.apache.commons.logging.Log" %>
<%@ page import="org.apache.commons.logging.LogFactory" %>
+
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
+
<%
//org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.editDatapropStmtRequestDispatch.jsp");
final Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.editDatapropStmtRequestDispatch.jsp");
@@ -53,7 +56,7 @@
String predicateUri = vreq.getParameter("predicateUri");
String formParam = vreq.getParameter("editForm");
String command = vreq.getParameter("cmd");
- String vitroNsProp = vreq.getParameter("vitroNsProp");
+ String vitroNsProp = vreq.getParameter("vitroNsProp");
boolean isVitroNsProp = vitroNsProp != null && vitroNsProp.equals("true") ? true : false;
if( subjectUri == null || subjectUri.trim().length() == 0 ) {
@@ -64,13 +67,15 @@
log.error("required subjectUri parameter missing");
throw new Error("predicateUri was empty, it is required by editDatapropStmtRequestDispatch");
}
+
+ /* since we have the URIs let's put the individual, data property, and optional data property statement in the request */
+
vreq.setAttribute("subjectUri", subjectUri);
vreq.setAttribute("subjectUriJson", MiscWebUtils.escape(subjectUri));
vreq.setAttribute("predicateUri", predicateUri);
vreq.setAttribute("predicateUriJson", MiscWebUtils.escape(predicateUri));
-
- /* since we have the URIs let's put the individual, data property, and optional data property statement in the request */
-
+ vreq.setAttribute("vitroNsProp", vitroNsProp);
+
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
Individual subject = wdf.getIndividualDao().getIndividualByURI(subjectUri);
@@ -82,7 +87,7 @@
DataProperty dataproperty = wdf.getDataPropertyDao().getDataPropertyByURI( predicateUri );
if( dataproperty == null) {
- // No dataproperty will be returned for a vitro ns prop
+ // No dataproperty will be returned for a vitro ns prop, but we shouldn't throw an error.
if (!isVitroNsProp) {
log.error("Could not find data property '"+predicateUri+"' in model");
throw new Error("editDatapropStmtRequest.jsp: Could not find DataProperty in model: " + predicateUri);
@@ -111,7 +116,6 @@
if( dataHash != 0) {
Model model = (Model)application.getAttribute("jenaOntModel");
dps = RdfLiteralHash.getPropertyStmtByHash(subject, dataHash, model, isVitroNsProp);
-
if (dps==null) {
log.error("No match to existing data property \""+predicateUri+"\" statement for subject \""+subjectUri+"\" via key "+datapropKeyStr);
@@ -126,7 +130,7 @@
log.debug("predicate for DataProperty from request is " + dataproperty.getURI() + " with rangeDatatypeUri of '" + dataproperty.getRangeDatatypeURI() + "'");
}
if( dps == null )
- log.debug("no existng DataPropertyStatement statement was found, making a new statemet");
+ log.debug("no existing DataPropertyStatement statement was found, making a new statemet");
else{
log.debug("Found an existing DataPropertyStatement");
String msg = "existing datapropstmt: ";
@@ -134,9 +138,7 @@
msg += " prop uri: <"+dps.getDatapropURI() + ">\n";
msg += " prop data: \"" + dps.getData() + "\"\n";
msg += " datatype: <" + dps.getDatatypeURI() + ">\n";
- //if (!isVitroNsProp) {
- msg += " hash of this stmt: " + RdfLiteralHash.makeRdfLiteralHash(dps);
- //}
+ msg += " hash of this stmt: " + RdfLiteralHash.makeRdfLiteralHash(dps);
log.debug(msg);
}
}
diff --git a/webapp/web/edit/forms/datapropStmtDelete.jsp b/webapp/web/edit/forms/datapropStmtDelete.jsp
index 3e2bdecf8..031cd903b 100644
--- a/webapp/web/edit/forms/datapropStmtDelete.jsp
+++ b/webapp/web/edit/forms/datapropStmtDelete.jsp
@@ -1,5 +1,7 @@
<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%>
+<%@ page import="com.hp.hpl.jena.rdf.model.Model" %>
+
<%@ page import="edu.cornell.mannlib.vedit.beans.LoginFormBean" %>
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataProperty" %>
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement" %>
@@ -23,7 +25,7 @@
if (!VitroRequestPrep.isSelfEditing(request) && !LoginFormBean.loggedIn(request, LoginFormBean.NON_EDITOR)) {%>