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;
|
||||
|
||||
CollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject,
|
||||
VitroRequest vreq, EditingHelper editingHelper)
|
||||
VitroRequest vreq, EditingPolicyHelper policyHelper)
|
||||
throws InvalidConfigurationException {
|
||||
|
||||
super(op, subject, vreq, editingHelper);
|
||||
super(op, subject, vreq, policyHelper);
|
||||
|
||||
String invalidConfigMessage = checkConfiguration();
|
||||
if ( ! invalidConfigMessage.isEmpty() ) {
|
||||
|
@ -62,7 +62,7 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM
|
|||
|
||||
/* Collate the data */
|
||||
Map<String, List<ObjectPropertyStatementTemplateModel>> unsortedSubclasses =
|
||||
collate(subjectUri, propertyUri, statementData, vreq, editingHelper);
|
||||
collate(subjectUri, propertyUri, statementData, vreq, policyHelper);
|
||||
|
||||
/* Sort by subclass name */
|
||||
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,
|
||||
List<Map<String, String>> statementData, VitroRequest vreq, EditingHelper editingHelper) {
|
||||
List<Map<String, String>> statementData, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||
|
||||
Map<String, List<ObjectPropertyStatementTemplateModel>> subclassMap =
|
||||
new HashMap<String, List<ObjectPropertyStatementTemplateModel>>();
|
||||
|
@ -117,7 +117,7 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM
|
|||
subclassMap.put(subclassName, currentList);
|
||||
}
|
||||
currentList.add(new ObjectPropertyStatementTemplateModel(subjectUri,
|
||||
propertyUri, objectKey, map, editingHelper));
|
||||
propertyUri, objectKey, map, policyHelper));
|
||||
}
|
||||
return subclassMap;
|
||||
}
|
||||
|
|
|
@ -13,11 +13,11 @@ public class DataPropertyStatementTemplateModel extends BaseTemplateModel {
|
|||
private static final Log log = LogFactory.getLog(DataPropertyStatementTemplateModel.class);
|
||||
|
||||
private DataPropertyStatement statement;
|
||||
private EditingHelper editingHelper;
|
||||
private EditingPolicyHelper policyHelper;
|
||||
|
||||
DataPropertyStatementTemplateModel(DataPropertyStatement statement, EditingHelper editingHelper) {
|
||||
DataPropertyStatementTemplateModel(DataPropertyStatement statement, EditingPolicyHelper policyHelper) {
|
||||
this.statement = statement;
|
||||
this.editingHelper = editingHelper;
|
||||
this.policyHelper = policyHelper;
|
||||
}
|
||||
|
||||
/* Access methods for templates */
|
||||
|
|
|
@ -22,8 +22,8 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel {
|
|||
|
||||
private List<DataPropertyStatementTemplateModel> statements;
|
||||
|
||||
DataPropertyTemplateModel(DataProperty dp, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||
super(dp, subject, editingHelper);
|
||||
DataPropertyTemplateModel(DataProperty dp, Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||
super(dp, subject, policyHelper);
|
||||
|
||||
setName(dp.getPublicName());
|
||||
|
||||
|
@ -32,7 +32,7 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel {
|
|||
List<DataPropertyStatement> dpStatements = dpDao.getDataPropertyStatementsForIndividualByProperty(subject, dp);
|
||||
statements = new ArrayList<DataPropertyStatementTemplateModel>(dpStatements.size());
|
||||
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.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 ServletContext servletContext;
|
||||
private PolicyIface policy;
|
||||
private IdentifierBundle ids;
|
||||
|
||||
protected EditingHelper(VitroRequest vreq, ServletContext servletContext) {
|
||||
protected EditingPolicyHelper(VitroRequest vreq, ServletContext servletContext) {
|
||||
this.vreq = vreq;
|
||||
this.servletContext = servletContext;
|
||||
setPolicy();
|
|
@ -57,9 +57,9 @@ public class GroupedPropertyList extends BaseTemplateModel {
|
|||
// Determine whether we're editing or not.
|
||||
boolean userCanEditThisProfile = getEditingStatus();
|
||||
|
||||
EditingHelper editingHelper = null;
|
||||
EditingPolicyHelper policyHelper = null;
|
||||
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.
|
||||
|
@ -108,7 +108,7 @@ public class GroupedPropertyList extends BaseTemplateModel {
|
|||
// Build the template data model from the groupList
|
||||
groups = new ArrayList<PropertyGroupTemplateModel>(propertyGroupList.size());
|
||||
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;
|
||||
|
||||
ObjectPropertyStatementTemplateModel(String subjectUri, String propertyUri,
|
||||
String objectKey, Map<String, String> data, EditingHelper editingHelper) {
|
||||
String objectKey, Map<String, String> data, EditingPolicyHelper policyHelper) {
|
||||
|
||||
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
|
||||
// whether a delete is allowed.
|
||||
if (editingHelper != null) {
|
||||
if (policyHelper != null) {
|
||||
this.subjectUri = subjectUri;
|
||||
this.propertyUri = propertyUri;
|
||||
objectUri = data.get(objectKey);
|
||||
|
@ -55,14 +55,14 @@ public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
|||
|
||||
// Determine whether the statement can be edited
|
||||
RequestedAction action = new EditObjPropStmt(objectPropertyStatement);
|
||||
PolicyDecision decision = editingHelper.getPolicyDecision(action);
|
||||
PolicyDecision decision = policyHelper.getPolicyDecision(action);
|
||||
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
||||
editAccessList.add(EditAccess.EDIT);
|
||||
}
|
||||
|
||||
// Determine whether the statement can be deleted
|
||||
action = new DropObjectPropStmt(subjectUri, propertyUri, objectUri);
|
||||
decision = editingHelper.getPolicyDecision(action);
|
||||
decision = policyHelper.getPolicyDecision(action);
|
||||
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
||||
editAccessList.add(EditAccess.DELETE);
|
||||
}
|
||||
|
|
|
@ -72,8 +72,8 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
|||
// Used for editing
|
||||
private boolean addAccess = false;
|
||||
|
||||
ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||
super(op, subject, editingHelper);
|
||||
ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||
super(op, subject, policyHelper);
|
||||
setName(op.getDomainPublic());
|
||||
|
||||
// Get the config for this object property
|
||||
|
@ -86,9 +86,9 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
|||
objectKey = getQueryObjectVariableName();
|
||||
|
||||
// Determine whether a new statement can be added
|
||||
if (editingHelper != null) {
|
||||
if (policyHelper != null) {
|
||||
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 ) {
|
||||
addAccess = true;
|
||||
}
|
||||
|
@ -127,16 +127,16 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
|||
}
|
||||
|
||||
protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op,
|
||||
Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||
Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||
if (op.getCollateBySubclass()) {
|
||||
try {
|
||||
return new CollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
||||
return new CollatedObjectPropertyTemplateModel(op, subject, vreq, policyHelper);
|
||||
} catch (InvalidConfigurationException e) {
|
||||
log.error(e);
|
||||
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
||||
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, policyHelper);
|
||||
}
|
||||
} 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 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();
|
||||
|
||||
List<Property> propertyList = group.getPropertyList();
|
||||
|
@ -32,9 +32,9 @@ public class PropertyGroupTemplateModel extends BaseTemplateModel {
|
|||
for (Property p : propertyList) {
|
||||
if (p instanceof ObjectProperty) {
|
||||
ObjectProperty op = (ObjectProperty)p;
|
||||
properties.add(ObjectPropertyTemplateModel.getObjectPropertyTemplateModel(op, subject, vreq, editingHelper));
|
||||
properties.add(ObjectPropertyTemplateModel.getObjectPropertyTemplateModel(op, subject, vreq, policyHelper));
|
||||
} 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 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
|
||||
// label differs between object and data properties.
|
||||
// this.name = property.getLabel();
|
||||
this.propertyUri = property.getURI();
|
||||
this.property = property;
|
||||
|
||||
if (editingHelper != null) {
|
||||
if (policyHelper != null) {
|
||||
subjectUri = subject.getURI();
|
||||
propertyUri = property.getURI();
|
||||
}
|
||||
|
|
|
@ -22,8 +22,8 @@ public class UncollatedObjectPropertyTemplateModel extends ObjectPropertyTemplat
|
|||
|
||||
private List<ObjectPropertyStatementTemplateModel> statements;
|
||||
|
||||
UncollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||
super(op, subject, vreq, editingHelper);
|
||||
UncollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingPolicyHelper policyHelper) {
|
||||
super(op, subject, vreq, policyHelper);
|
||||
|
||||
/* Get the data */
|
||||
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
|
||||
|
@ -41,7 +41,7 @@ public class UncollatedObjectPropertyTemplateModel extends ObjectPropertyTemplat
|
|||
String objectKey = getObjectKey();
|
||||
for (Map<String, String> map : statementData) {
|
||||
statements.add(new ObjectPropertyStatementTemplateModel(subjectUri,
|
||||
propertyUri, objectKey, map, editingHelper));
|
||||
propertyUri, objectKey, map, policyHelper));
|
||||
}
|
||||
|
||||
postprocessStatementList(statements);
|
||||
|
|
|
@ -39,9 +39,12 @@
|
|||
<#-- 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) -->
|
||||
<@p.showLabelAndAddLink overview showEditingLinks />
|
||||
<#list overview.statements as statement>
|
||||
<@p.editingLinks statement showEditingLinks />
|
||||
<p class="individual-overview">${statement.value}</p>
|
||||
<p class="individual-overview">
|
||||
<@p.editingLinks statement showEditingLinks />
|
||||
${statement.value}
|
||||
</p>
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
|
|
|
@ -24,8 +24,7 @@
|
|||
<#list group.properties as property>
|
||||
<article class="property" role="article">
|
||||
<#-- 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 -->
|
||||
<ul class="property-list" role="list">
|
||||
<#-- data property -->
|
||||
|
|
|
@ -32,6 +32,15 @@
|
|||
</#list>
|
||||
</#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>
|
||||
<#if showEditingLinks>
|
||||
<#local url = property.addUrl>
|
||||
|
|
Loading…
Add table
Reference in a new issue