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)) {%> <% } - + String subjectUri = request.getParameter("subjectUri"); String predicateUri = request.getParameter("predicateUri"); String datapropKeyStr = request.getParameter("datapropKey"); @@ -50,8 +52,14 @@ request.setAttribute("subjectName",subject.getName()); String dataValue=null; - // DataPropertyStatement dps=EditConfiguration.findDataPropertyStatementViaHashcode(subject,predicateUri,dataHash); - DataPropertyStatement dps= RdfLiteralHash.getDataPropertyStmtByHash(subject,dataHash); + // DataPropertyStatement dps=EditConfiguration.findDataPropertyStatementViaHashcode(subject,predicateUri,dataHash); + //DataPropertyStatement dps= RdfLiteralHash.getDataPropertyStmtByHash(subject,dataHash); + + Model model = (Model)application.getAttribute("jenaOntModel"); + String vitroNsProp = vreq.getParameter("vitroNsProp"); + boolean isVitroNsProp = vitroNsProp != null && vitroNsProp.equals("true") ? true : false; + DataPropertyStatement dps = RdfLiteralHash.getPropertyStmtByHash(subject, dataHash, model, isVitroNsProp); + if( log.isDebugEnabled() ){ log.debug("attempting to delete dataPropertyStatement: subjectURI <" + dps.getIndividualURI() +">"); log.debug( "predicateURI <" + dps.getDatapropURI() + ">"); diff --git a/webapp/web/edit/forms/defaultVitroNsPropForm.jsp b/webapp/web/edit/forms/defaultVitroNsPropForm.jsp index 459c5bb51..fe485c3ce 100644 --- a/webapp/web/edit/forms/defaultVitroNsPropForm.jsp +++ b/webapp/web/edit/forms/defaultVitroNsPropForm.jsp @@ -72,7 +72,6 @@ "editKey" : "${editKey}", "datapropKey" : "<%= datapropKeyStr == null ? "" : datapropKeyStr %>", "urlPatternToReturnTo" : "/entity", - "isVitroNsProp" : "true", "subject" : ["subject", "${subjectUriJson}" ], "predicate" : ["predicate", "${predicateUriJson}" ], @@ -127,6 +126,7 @@ + @@ -136,5 +136,16 @@

+ +
+ + + + + + + +
+ diff --git a/webapp/web/edit/messages/dataPropertyStatementMissing.jsp b/webapp/web/edit/messages/dataPropertyStatementMissing.jsp index 954ec31af..e83ec294c 100644 --- a/webapp/web/edit/messages/dataPropertyStatementMissing.jsp +++ b/webapp/web/edit/messages/dataPropertyStatementMissing.jsp @@ -20,7 +20,7 @@ if( vreq.getParameter("subjectUri") != null ){ Individual individual = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI(vreq.getParameter("subjectUri")); String name = "the individual you were trying to edit."; if( individual != null && individual.getName() != null ){ - name = individual.getName() + "."; + name = individual.getName(); } %> <%=vreq.getParameter("subjectUri")%> diff --git a/webapp/web/edit/messages/datapropertyBackButtonProblems.jsp b/webapp/web/edit/messages/datapropertyBackButtonProblems.jsp index 7b7231e84..2f81f0a77 100644 --- a/webapp/web/edit/messages/datapropertyBackButtonProblems.jsp +++ b/webapp/web/edit/messages/datapropertyBackButtonProblems.jsp @@ -39,7 +39,6 @@ and set a flag in the request to indicate "back button confusion" public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.datapropertyBackButtonProblems.jsp"); %> <% -System.out.println("IN BACK BUTTON JSP"); log.debug("Starting datapropertyBackButtonProblems.jsp"); if( session == null) diff --git a/webapp/web/edit/processDatapropRdfForm.jsp b/webapp/web/edit/processDatapropRdfForm.jsp index 17f28c75b..ab0d0f2c0 100644 --- a/webapp/web/edit/processDatapropRdfForm.jsp +++ b/webapp/web/edit/processDatapropRdfForm.jsp @@ -132,7 +132,7 @@ and set a flag in the request to indicate "back button confusion" throw new Error("In processDatapropRdfForm.jsp, could not find subject Individual via uri " + subjectUri); } - boolean backButtonProblems = checkForBackButtonConfusion(application, submission, editConfig, subject, wdf); + boolean backButtonProblems = checkForBackButtonConfusion(vreq, application, submission, editConfig, subject, wdf); if( backButtonProblems ){ %><% return; @@ -369,16 +369,17 @@ and set a flag in the request to indicate "back button confusion" return fieldChanged; } - private boolean checkForBackButtonConfusion(ServletContext application, EditSubmission submission, + private boolean checkForBackButtonConfusion(VitroRequest vreq, ServletContext application, EditSubmission submission, EditConfiguration editConfig, Individual subject, WebappDaoFactory wdf) { if (editConfig.getDatapropKey() == null || editConfig.getDatapropKey().length() == 0) return false; - Model model = (Model)application.getAttribute("jenaOntModel"); + Model model = (Model)application.getAttribute("jenaOntModel"); int dpropHash = Integer.parseInt(editConfig.getDatapropKey()); - boolean isVitroNsProp = editConfig.isVitroNsProp(); + String vitroNsProp = vreq.getParameter("vitroNsProp"); + boolean isVitroNsProp = vitroNsProp != null && vitroNsProp.equals("true"); DataPropertyStatement dps = RdfLiteralHash.getPropertyStmtByHash(subject, dpropHash, model, isVitroNsProp); if (dps != null)