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:
rjy7 2011-01-11 20:54:14 +00:00
parent a91f571868
commit a6adc5163d
13 changed files with 53 additions and 42 deletions

View file

@ -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;
}

View file

@ -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 */

View file

@ -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));
}
}

View file

@ -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();

View file

@ -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));
}
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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));
}
}
}

View file

@ -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();
}

View file

@ -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);

View file

@ -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>

View file

@ -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 -->

View file

@ -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>