NIHVIVO-1332 Display property title on untitled properties like phone, email if there is an add link to display. Changed a Java class name.
This commit is contained in:
parent
a91f571868
commit
a6adc5163d
13 changed files with 53 additions and 42 deletions
|
@ -38,10 +38,10 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM
|
||||||
private SortedMap<String, List<ObjectPropertyStatementTemplateModel>> subclasses;
|
private SortedMap<String, List<ObjectPropertyStatementTemplateModel>> subclasses;
|
||||||
|
|
||||||
CollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject,
|
CollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject,
|
||||||
VitroRequest vreq, EditingHelper editingHelper)
|
VitroRequest vreq, EditingPolicyHelper policyHelper)
|
||||||
throws InvalidConfigurationException {
|
throws InvalidConfigurationException {
|
||||||
|
|
||||||
super(op, subject, vreq, editingHelper);
|
super(op, subject, vreq, policyHelper);
|
||||||
|
|
||||||
String invalidConfigMessage = checkConfiguration();
|
String invalidConfigMessage = checkConfiguration();
|
||||||
if ( ! invalidConfigMessage.isEmpty() ) {
|
if ( ! invalidConfigMessage.isEmpty() ) {
|
||||||
|
@ -62,7 +62,7 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM
|
||||||
|
|
||||||
/* Collate the data */
|
/* Collate the data */
|
||||||
Map<String, List<ObjectPropertyStatementTemplateModel>> unsortedSubclasses =
|
Map<String, List<ObjectPropertyStatementTemplateModel>> unsortedSubclasses =
|
||||||
collate(subjectUri, propertyUri, statementData, vreq, editingHelper);
|
collate(subjectUri, propertyUri, statementData, vreq, policyHelper);
|
||||||
|
|
||||||
/* Sort by subclass name */
|
/* Sort by subclass name */
|
||||||
Comparator<String> comparer = new Comparator<String>() {
|
Comparator<String> comparer = new Comparator<String>() {
|
||||||
|
@ -97,7 +97,7 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, List<ObjectPropertyStatementTemplateModel>> collate(String subjectUri, String propertyUri,
|
private Map<String, List<ObjectPropertyStatementTemplateModel>> collate(String subjectUri, String propertyUri,
|
||||||
List<Map<String, String>> statementData, VitroRequest vreq, EditingHelper editingHelper) {
|
List<Map<String, String>> statementData, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||||
|
|
||||||
Map<String, List<ObjectPropertyStatementTemplateModel>> subclassMap =
|
Map<String, List<ObjectPropertyStatementTemplateModel>> subclassMap =
|
||||||
new HashMap<String, List<ObjectPropertyStatementTemplateModel>>();
|
new HashMap<String, List<ObjectPropertyStatementTemplateModel>>();
|
||||||
|
@ -117,7 +117,7 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM
|
||||||
subclassMap.put(subclassName, currentList);
|
subclassMap.put(subclassName, currentList);
|
||||||
}
|
}
|
||||||
currentList.add(new ObjectPropertyStatementTemplateModel(subjectUri,
|
currentList.add(new ObjectPropertyStatementTemplateModel(subjectUri,
|
||||||
propertyUri, objectKey, map, editingHelper));
|
propertyUri, objectKey, map, policyHelper));
|
||||||
}
|
}
|
||||||
return subclassMap;
|
return subclassMap;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,11 +13,11 @@ public class DataPropertyStatementTemplateModel extends BaseTemplateModel {
|
||||||
private static final Log log = LogFactory.getLog(DataPropertyStatementTemplateModel.class);
|
private static final Log log = LogFactory.getLog(DataPropertyStatementTemplateModel.class);
|
||||||
|
|
||||||
private DataPropertyStatement statement;
|
private DataPropertyStatement statement;
|
||||||
private EditingHelper editingHelper;
|
private EditingPolicyHelper policyHelper;
|
||||||
|
|
||||||
DataPropertyStatementTemplateModel(DataPropertyStatement statement, EditingHelper editingHelper) {
|
DataPropertyStatementTemplateModel(DataPropertyStatement statement, EditingPolicyHelper policyHelper) {
|
||||||
this.statement = statement;
|
this.statement = statement;
|
||||||
this.editingHelper = editingHelper;
|
this.policyHelper = policyHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Access methods for templates */
|
/* Access methods for templates */
|
||||||
|
|
|
@ -22,8 +22,8 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel {
|
||||||
|
|
||||||
private List<DataPropertyStatementTemplateModel> statements;
|
private List<DataPropertyStatementTemplateModel> statements;
|
||||||
|
|
||||||
DataPropertyTemplateModel(DataProperty dp, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
DataPropertyTemplateModel(DataProperty dp, Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||||
super(dp, subject, editingHelper);
|
super(dp, subject, policyHelper);
|
||||||
|
|
||||||
setName(dp.getPublicName());
|
setName(dp.getPublicName());
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel {
|
||||||
List<DataPropertyStatement> dpStatements = dpDao.getDataPropertyStatementsForIndividualByProperty(subject, dp);
|
List<DataPropertyStatement> dpStatements = dpDao.getDataPropertyStatementsForIndividualByProperty(subject, dp);
|
||||||
statements = new ArrayList<DataPropertyStatementTemplateModel>(dpStatements.size());
|
statements = new ArrayList<DataPropertyStatementTemplateModel>(dpStatements.size());
|
||||||
for (DataPropertyStatement dps : dpStatements) {
|
for (DataPropertyStatement dps : dpStatements) {
|
||||||
statements.add(new DataPropertyStatementTemplateModel(dps, editingHelper));
|
statements.add(new DataPropertyStatementTemplateModel(dps, policyHelper));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,16 +17,16 @@ import edu.cornell.mannlib.vitro.webapp.auth.policy.ifaces.PolicyIface;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.ifaces.RequestedAction;
|
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.ifaces.RequestedAction;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
|
||||||
public class EditingHelper {
|
public class EditingPolicyHelper {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(EditingHelper.class);
|
private static final Log log = LogFactory.getLog(EditingPolicyHelper.class);
|
||||||
|
|
||||||
private VitroRequest vreq;
|
private VitroRequest vreq;
|
||||||
private ServletContext servletContext;
|
private ServletContext servletContext;
|
||||||
private PolicyIface policy;
|
private PolicyIface policy;
|
||||||
private IdentifierBundle ids;
|
private IdentifierBundle ids;
|
||||||
|
|
||||||
protected EditingHelper(VitroRequest vreq, ServletContext servletContext) {
|
protected EditingPolicyHelper(VitroRequest vreq, ServletContext servletContext) {
|
||||||
this.vreq = vreq;
|
this.vreq = vreq;
|
||||||
this.servletContext = servletContext;
|
this.servletContext = servletContext;
|
||||||
setPolicy();
|
setPolicy();
|
|
@ -57,9 +57,9 @@ public class GroupedPropertyList extends BaseTemplateModel {
|
||||||
// Determine whether we're editing or not.
|
// Determine whether we're editing or not.
|
||||||
boolean userCanEditThisProfile = getEditingStatus();
|
boolean userCanEditThisProfile = getEditingStatus();
|
||||||
|
|
||||||
EditingHelper editingHelper = null;
|
EditingPolicyHelper policyHelper = null;
|
||||||
if (userCanEditThisProfile) {
|
if (userCanEditThisProfile) {
|
||||||
editingHelper = new EditingHelper(vreq, getServletContext());
|
policyHelper = new EditingPolicyHelper(vreq, getServletContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the property list for the subject. The properties will be put into groups later.
|
// Create the property list for the subject. The properties will be put into groups later.
|
||||||
|
@ -108,7 +108,7 @@ public class GroupedPropertyList extends BaseTemplateModel {
|
||||||
// Build the template data model from the groupList
|
// Build the template data model from the groupList
|
||||||
groups = new ArrayList<PropertyGroupTemplateModel>(propertyGroupList.size());
|
groups = new ArrayList<PropertyGroupTemplateModel>(propertyGroupList.size());
|
||||||
for (PropertyGroup pg : propertyGroupList) {
|
for (PropertyGroup pg : propertyGroupList) {
|
||||||
groups.add(new PropertyGroupTemplateModel(vreq, pg, subject, editingHelper));
|
groups.add(new PropertyGroupTemplateModel(vreq, pg, subject, policyHelper));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,14 +39,14 @@ public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
||||||
private List<EditAccess> editAccessList;
|
private List<EditAccess> editAccessList;
|
||||||
|
|
||||||
ObjectPropertyStatementTemplateModel(String subjectUri, String propertyUri,
|
ObjectPropertyStatementTemplateModel(String subjectUri, String propertyUri,
|
||||||
String objectKey, Map<String, String> data, EditingHelper editingHelper) {
|
String objectKey, Map<String, String> data, EditingPolicyHelper policyHelper) {
|
||||||
|
|
||||||
this.data = data;
|
this.data = data;
|
||||||
|
|
||||||
// If the editingHelper is non-null, we are in edit mode, so create the list of editing permissions.
|
// If the policyHelper is non-null, we are in edit mode, so create the list of editing permissions.
|
||||||
// We do this now rather than in getEditUrl() and getDeleteUrl(), because getEditUrl() also needs to know
|
// We do this now rather than in getEditUrl() and getDeleteUrl(), because getEditUrl() also needs to know
|
||||||
// whether a delete is allowed.
|
// whether a delete is allowed.
|
||||||
if (editingHelper != null) {
|
if (policyHelper != null) {
|
||||||
this.subjectUri = subjectUri;
|
this.subjectUri = subjectUri;
|
||||||
this.propertyUri = propertyUri;
|
this.propertyUri = propertyUri;
|
||||||
objectUri = data.get(objectKey);
|
objectUri = data.get(objectKey);
|
||||||
|
@ -55,14 +55,14 @@ public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
||||||
|
|
||||||
// Determine whether the statement can be edited
|
// Determine whether the statement can be edited
|
||||||
RequestedAction action = new EditObjPropStmt(objectPropertyStatement);
|
RequestedAction action = new EditObjPropStmt(objectPropertyStatement);
|
||||||
PolicyDecision decision = editingHelper.getPolicyDecision(action);
|
PolicyDecision decision = policyHelper.getPolicyDecision(action);
|
||||||
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
||||||
editAccessList.add(EditAccess.EDIT);
|
editAccessList.add(EditAccess.EDIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine whether the statement can be deleted
|
// Determine whether the statement can be deleted
|
||||||
action = new DropObjectPropStmt(subjectUri, propertyUri, objectUri);
|
action = new DropObjectPropStmt(subjectUri, propertyUri, objectUri);
|
||||||
decision = editingHelper.getPolicyDecision(action);
|
decision = policyHelper.getPolicyDecision(action);
|
||||||
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
||||||
editAccessList.add(EditAccess.DELETE);
|
editAccessList.add(EditAccess.DELETE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,8 +72,8 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
||||||
// Used for editing
|
// Used for editing
|
||||||
private boolean addAccess = false;
|
private boolean addAccess = false;
|
||||||
|
|
||||||
ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||||
super(op, subject, editingHelper);
|
super(op, subject, policyHelper);
|
||||||
setName(op.getDomainPublic());
|
setName(op.getDomainPublic());
|
||||||
|
|
||||||
// Get the config for this object property
|
// Get the config for this object property
|
||||||
|
@ -86,9 +86,9 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
||||||
objectKey = getQueryObjectVariableName();
|
objectKey = getQueryObjectVariableName();
|
||||||
|
|
||||||
// Determine whether a new statement can be added
|
// Determine whether a new statement can be added
|
||||||
if (editingHelper != null) {
|
if (policyHelper != null) {
|
||||||
RequestedAction action = new AddObjectPropStmt(subjectUri, propertyUri, RequestActionConstants.SOME_URI);
|
RequestedAction action = new AddObjectPropStmt(subjectUri, propertyUri, RequestActionConstants.SOME_URI);
|
||||||
PolicyDecision decision = editingHelper.getPolicyDecision(action);
|
PolicyDecision decision = policyHelper.getPolicyDecision(action);
|
||||||
if( decision != null && decision.getAuthorized() == Authorization.AUTHORIZED ) {
|
if( decision != null && decision.getAuthorized() == Authorization.AUTHORIZED ) {
|
||||||
addAccess = true;
|
addAccess = true;
|
||||||
}
|
}
|
||||||
|
@ -127,16 +127,16 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op,
|
protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op,
|
||||||
Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||||
if (op.getCollateBySubclass()) {
|
if (op.getCollateBySubclass()) {
|
||||||
try {
|
try {
|
||||||
return new CollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
return new CollatedObjectPropertyTemplateModel(op, subject, vreq, policyHelper);
|
||||||
} catch (InvalidConfigurationException e) {
|
} catch (InvalidConfigurationException e) {
|
||||||
log.error(e);
|
log.error(e);
|
||||||
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, policyHelper);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, policyHelper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class PropertyGroupTemplateModel extends BaseTemplateModel {
|
||||||
private String name;
|
private String name;
|
||||||
private List<PropertyTemplateModel> properties;
|
private List<PropertyTemplateModel> properties;
|
||||||
|
|
||||||
PropertyGroupTemplateModel(VitroRequest vreq, PropertyGroup group, Individual subject, EditingHelper editingHelper) {
|
PropertyGroupTemplateModel(VitroRequest vreq, PropertyGroup group, Individual subject, EditingPolicyHelper policyHelper) {
|
||||||
this.name = group.getName();
|
this.name = group.getName();
|
||||||
|
|
||||||
List<Property> propertyList = group.getPropertyList();
|
List<Property> propertyList = group.getPropertyList();
|
||||||
|
@ -32,9 +32,9 @@ public class PropertyGroupTemplateModel extends BaseTemplateModel {
|
||||||
for (Property p : propertyList) {
|
for (Property p : propertyList) {
|
||||||
if (p instanceof ObjectProperty) {
|
if (p instanceof ObjectProperty) {
|
||||||
ObjectProperty op = (ObjectProperty)p;
|
ObjectProperty op = (ObjectProperty)p;
|
||||||
properties.add(ObjectPropertyTemplateModel.getObjectPropertyTemplateModel(op, subject, vreq, editingHelper));
|
properties.add(ObjectPropertyTemplateModel.getObjectPropertyTemplateModel(op, subject, vreq, policyHelper));
|
||||||
} else {
|
} else {
|
||||||
properties.add(new DataPropertyTemplateModel((DataProperty)p, subject, vreq, editingHelper));
|
properties.add(new DataPropertyTemplateModel((DataProperty)p, subject, vreq, policyHelper));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,14 +24,14 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel {
|
||||||
protected Property property; // RY DO WE NEED THIS, or just the uri??
|
protected Property property; // RY DO WE NEED THIS, or just the uri??
|
||||||
protected boolean addAccess = false;
|
protected boolean addAccess = false;
|
||||||
|
|
||||||
PropertyTemplateModel(Property property, Individual subject, EditingHelper editingHelper) {
|
PropertyTemplateModel(Property property, Individual subject, EditingPolicyHelper policyHelper) {
|
||||||
// Do in subclass constructor. The label has not been set on the property, and getting the
|
// Do in subclass constructor. The label has not been set on the property, and getting the
|
||||||
// label differs between object and data properties.
|
// label differs between object and data properties.
|
||||||
// this.name = property.getLabel();
|
// this.name = property.getLabel();
|
||||||
this.propertyUri = property.getURI();
|
this.propertyUri = property.getURI();
|
||||||
this.property = property;
|
this.property = property;
|
||||||
|
|
||||||
if (editingHelper != null) {
|
if (policyHelper != null) {
|
||||||
subjectUri = subject.getURI();
|
subjectUri = subject.getURI();
|
||||||
propertyUri = property.getURI();
|
propertyUri = property.getURI();
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,8 @@ public class UncollatedObjectPropertyTemplateModel extends ObjectPropertyTemplat
|
||||||
|
|
||||||
private List<ObjectPropertyStatementTemplateModel> statements;
|
private List<ObjectPropertyStatementTemplateModel> statements;
|
||||||
|
|
||||||
UncollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
UncollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||||
super(op, subject, vreq, editingHelper);
|
super(op, subject, vreq, policyHelper);
|
||||||
|
|
||||||
/* Get the data */
|
/* Get the data */
|
||||||
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
|
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
|
||||||
|
@ -41,7 +41,7 @@ public class UncollatedObjectPropertyTemplateModel extends ObjectPropertyTemplat
|
||||||
String objectKey = getObjectKey();
|
String objectKey = getObjectKey();
|
||||||
for (Map<String, String> map : statementData) {
|
for (Map<String, String> map : statementData) {
|
||||||
statements.add(new ObjectPropertyStatementTemplateModel(subjectUri,
|
statements.add(new ObjectPropertyStatementTemplateModel(subjectUri,
|
||||||
propertyUri, objectKey, map, editingHelper));
|
propertyUri, objectKey, map, policyHelper));
|
||||||
}
|
}
|
||||||
|
|
||||||
postprocessStatementList(statements);
|
postprocessStatementList(statements);
|
||||||
|
|
|
@ -39,9 +39,12 @@
|
||||||
<#-- Overview -->
|
<#-- Overview -->
|
||||||
<#assign overview = propertyGroups.getPropertyAndRemoveFromList("${core}overview")!>
|
<#assign overview = propertyGroups.getPropertyAndRemoveFromList("${core}overview")!>
|
||||||
<#if overview?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
<#if overview?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<@p.showLabelAndAddLink overview showEditingLinks />
|
||||||
<#list overview.statements as statement>
|
<#list overview.statements as statement>
|
||||||
<@p.editingLinks statement showEditingLinks />
|
<p class="individual-overview">
|
||||||
<p class="individual-overview">${statement.value}</p>
|
<@p.editingLinks statement showEditingLinks />
|
||||||
|
${statement.value}
|
||||||
|
</p>
|
||||||
</#list>
|
</#list>
|
||||||
</#if>
|
</#if>
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
<article class="property" role="article">
|
<article class="property" role="article">
|
||||||
<#-- Property display name -->
|
<#-- Property display name -->
|
||||||
<h3>${property.name} <@p.addLink property showEditingLinks /></h3>
|
<h3>${property.name} <@p.addLink property showEditingLinks /></h3>
|
||||||
|
|
||||||
<#-- List the statements for each property -->
|
<#-- List the statements for each property -->
|
||||||
<ul class="property-list" role="list">
|
<ul class="property-list" role="list">
|
||||||
<#-- data property -->
|
<#-- data property -->
|
||||||
|
|
|
@ -32,6 +32,15 @@
|
||||||
</#list>
|
</#list>
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
|
<#-- Some properties usually display without a label. But if there's an add link,
|
||||||
|
we need to also show the property label. -->
|
||||||
|
<#macro showLabelAndAddLink property showEditingLinks>
|
||||||
|
<#local addLink><@addLink property showEditingLinks /></#local>
|
||||||
|
<#if addLink?has_content>
|
||||||
|
<h3>${property.name?capitalize} ${addLink}</h3>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
||||||
|
|
||||||
<#macro addLink property showEditingLinks>
|
<#macro addLink property showEditingLinks>
|
||||||
<#if showEditingLinks>
|
<#if showEditingLinks>
|
||||||
<#local url = property.addUrl>
|
<#local url = property.addUrl>
|
||||||
|
|
Loading…
Add table
Reference in a new issue