NIHVIVO-1332 Modifications to controller, template models, and templates for editing controls
This commit is contained in:
parent
e13564c983
commit
3451bb4786
14 changed files with 103 additions and 98 deletions
|
@ -115,8 +115,6 @@ public class IndividualController extends FreemarkerHttpServlet {
|
||||||
|
|
||||||
Map<String, Object> body = new HashMap<String, Object>();
|
Map<String, Object> body = new HashMap<String, Object>();
|
||||||
|
|
||||||
body.put("editStatus", getEditingData(vreq));
|
|
||||||
|
|
||||||
body.put("title", individual.getName());
|
body.put("title", individual.getName());
|
||||||
|
|
||||||
body.put("relatedSubject", getRelatedSubject(vreq));
|
body.put("relatedSubject", getRelatedSubject(vreq));
|
||||||
|
@ -151,20 +149,6 @@ public class IndividualController extends FreemarkerHttpServlet {
|
||||||
EditSubmission.clearAllEditSubmissionsInSession(session);
|
EditSubmission.clearAllEditSubmissionsInSession(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Object> getEditingData(VitroRequest vreq) {
|
|
||||||
|
|
||||||
LoginStatusBean loginBean = LoginStatusBean.getBean(vreq);
|
|
||||||
Map<String, Object> editingData = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
// RY This will be improved later. What is important is not whether the user is a self-editor,
|
|
||||||
// but whether he has editing privileges on this profile.
|
|
||||||
editingData.put("showEditingLinks", VitroRequestPrep.isSelfEditing(vreq) ||
|
|
||||||
loginBean.isLoggedInAtLeast(LoginStatusBean.NON_EDITOR));
|
|
||||||
editingData.put("showAdminPanel", loginBean.isLoggedInAtLeast(LoginStatusBean.EDITOR));
|
|
||||||
|
|
||||||
return editingData;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<String, Object> getRelatedSubject(VitroRequest vreq) {
|
private Map<String, Object> getRelatedSubject(VitroRequest vreq) {
|
||||||
Map<String, Object> map = null;
|
Map<String, Object> map = null;
|
||||||
|
|
||||||
|
@ -215,13 +199,14 @@ public class IndividualController extends FreemarkerHttpServlet {
|
||||||
//setup highlighter for search terms
|
//setup highlighter for search terms
|
||||||
//checkForSearch(vreq, individual);
|
//checkForSearch(vreq, individual);
|
||||||
|
|
||||||
return new IndividualTemplateModel(individual, vreq);
|
return new IndividualTemplateModel(individual, vreq, LoginStatusBean.getBean(vreq));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine whether the individual has a custom display template based on its class membership.
|
// Determine whether the individual has a custom display template based on its class membership.
|
||||||
// If not, return the default individual template.
|
// If not, return the default individual template.
|
||||||
private String getIndividualTemplate(Individual individual) {
|
private String getIndividualTemplate(Individual individual) {
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
String vclassName = "unknown";
|
String vclassName = "unknown";
|
||||||
String customTemplate = null;
|
String customTemplate = null;
|
||||||
|
|
||||||
|
@ -232,7 +217,7 @@ public class IndividualController extends FreemarkerHttpServlet {
|
||||||
customTemplate = clas.getCustomDisplayView();
|
customTemplate = clas.getCustomDisplayView();
|
||||||
if (customTemplate != null) {
|
if (customTemplate != null) {
|
||||||
if (customTemplate.length()>0) {
|
if (customTemplate.length()>0) {
|
||||||
vclassName = clas.getName(); // reset entity vclassname to name of class where a custom view
|
vclassName = clas.getName(); // reset entity vclassname to name of class where a custom view; this call has side-effects
|
||||||
log.debug("Found direct class [" + clas.getName() + "] with custom view " + customTemplate + "; resetting entity vclassName to this class");
|
log.debug("Found direct class [" + clas.getName() + "] with custom view " + customTemplate + "; resetting entity vclassName to this class");
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -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 editLinkHelper)
|
VitroRequest vreq, EditingHelper editingHelper)
|
||||||
throws InvalidConfigurationException {
|
throws InvalidConfigurationException {
|
||||||
|
|
||||||
super(op, subject, vreq, editLinkHelper);
|
super(op, subject, vreq, editingHelper);
|
||||||
|
|
||||||
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, editLinkHelper);
|
collate(subjectUri, propertyUri, statementData, vreq, editingHelper);
|
||||||
|
|
||||||
/* 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 editLinkHelper) {
|
List<Map<String, String>> statementData, VitroRequest vreq, EditingHelper editingHelper) {
|
||||||
|
|
||||||
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, editLinkHelper));
|
propertyUri, objectKey, map, editingHelper));
|
||||||
}
|
}
|
||||||
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 editLinkHelper;
|
private EditingHelper editingHelper;
|
||||||
|
|
||||||
DataPropertyStatementTemplateModel(DataPropertyStatement statement, EditingHelper editLinkHelper) {
|
DataPropertyStatementTemplateModel(DataPropertyStatement statement, EditingHelper editingHelper) {
|
||||||
this.statement = statement;
|
this.statement = statement;
|
||||||
this.editLinkHelper = editLinkHelper;
|
this.editingHelper = editingHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Access methods for templates */
|
/* Access methods for templates */
|
||||||
|
|
|
@ -22,10 +22,10 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel {
|
||||||
private static final String TYPE = "data";
|
private static final String TYPE = "data";
|
||||||
|
|
||||||
private List<DataPropertyStatementTemplateModel> statements;
|
private List<DataPropertyStatementTemplateModel> statements;
|
||||||
private EditingHelper editLinkHelper;
|
private EditingHelper editingHelper;
|
||||||
|
|
||||||
DataPropertyTemplateModel(DataProperty dp, Individual subject, VitroRequest vreq, EditingHelper editLinkHelper) {
|
DataPropertyTemplateModel(DataProperty dp, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||||
super(dp, editLinkHelper);
|
super(dp, editingHelper);
|
||||||
|
|
||||||
setName(dp.getPublicName());
|
setName(dp.getPublicName());
|
||||||
|
|
||||||
|
@ -34,7 +34,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, editLinkHelper));
|
statements.add(new DataPropertyStatementTemplateModel(dps, editingHelper));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,19 +45,21 @@ public class GroupedPropertyList extends BaseTemplateModel {
|
||||||
private Individual subject;
|
private Individual subject;
|
||||||
private VitroRequest vreq;
|
private VitroRequest vreq;
|
||||||
private WebappDaoFactory wdf;
|
private WebappDaoFactory wdf;
|
||||||
|
private LoginStatusBean loginStatusBean;
|
||||||
private List<PropertyGroupTemplateModel> groups;
|
private List<PropertyGroupTemplateModel> groups;
|
||||||
|
|
||||||
GroupedPropertyList(Individual subject, VitroRequest vreq) {
|
GroupedPropertyList(Individual subject, VitroRequest vreq, LoginStatusBean loginStatusBean) {
|
||||||
this.subject = subject;
|
this.subject = subject;
|
||||||
this.vreq = vreq;
|
this.vreq = vreq;
|
||||||
this.wdf = vreq.getWebappDaoFactory();
|
this.wdf = vreq.getWebappDaoFactory();
|
||||||
|
this.loginStatusBean = loginStatusBean;
|
||||||
|
|
||||||
// Determine whether we're editing or not.
|
// Determine whether we're editing or not.
|
||||||
boolean userCanEditThisProfile = getEditingStatus();
|
boolean userCanEditThisProfile = getEditingStatus();
|
||||||
|
|
||||||
EditingHelper editLinkHelper = null;
|
EditingHelper editingHelper = null;
|
||||||
if (userCanEditThisProfile) {
|
if (userCanEditThisProfile) {
|
||||||
editLinkHelper = new EditingHelper(vreq, getServletContext());
|
editingHelper = new EditingHelper(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.
|
||||||
|
@ -106,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, editLinkHelper));
|
groups.add(new PropertyGroupTemplateModel(vreq, pg, subject, editingHelper));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -118,7 +120,7 @@ public class GroupedPropertyList extends BaseTemplateModel {
|
||||||
*/
|
*/
|
||||||
private boolean getEditingStatus() {
|
private boolean getEditingStatus() {
|
||||||
boolean isSelfEditing = VitroRequestPrep.isSelfEditing(vreq);
|
boolean isSelfEditing = VitroRequestPrep.isSelfEditing(vreq);
|
||||||
boolean isCurator = LoginStatusBean.getBean(vreq).isLoggedInAtLeast(LoginStatusBean.CURATOR);
|
boolean isCurator = loginStatusBean.isLoggedInAtLeast(LoginStatusBean.CURATOR);
|
||||||
return isSelfEditing || isCurator;
|
return isSelfEditing || isCurator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import org.apache.commons.logging.LogFactory;
|
||||||
import org.openrdf.model.URI;
|
import org.openrdf.model.URI;
|
||||||
import org.openrdf.model.impl.URIImpl;
|
import org.openrdf.model.impl.URIImpl;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vedit.beans.LoginStatusBean;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Link;
|
import edu.cornell.mannlib.vitro.webapp.beans.Link;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup;
|
import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup;
|
||||||
|
@ -18,6 +19,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Route;
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Route;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.filters.VitroRequestPrep;
|
||||||
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder;
|
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder;
|
||||||
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder.ClassView;
|
import edu.cornell.mannlib.vitro.webapp.web.ViewFinder.ClassView;
|
||||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
|
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
|
||||||
|
@ -32,6 +34,7 @@ public class IndividualTemplateModel extends BaseTemplateModel {
|
||||||
protected VitroRequest vreq;
|
protected VitroRequest vreq;
|
||||||
protected UrlBuilder urlBuilder;
|
protected UrlBuilder urlBuilder;
|
||||||
protected GroupedPropertyList propertyList = null;
|
protected GroupedPropertyList propertyList = null;
|
||||||
|
protected LoginStatusBean loginStatusBean = null;
|
||||||
|
|
||||||
public IndividualTemplateModel(Individual individual, VitroRequest vreq) {
|
public IndividualTemplateModel(Individual individual, VitroRequest vreq) {
|
||||||
this.individual = individual;
|
this.individual = individual;
|
||||||
|
@ -40,6 +43,14 @@ public class IndividualTemplateModel extends BaseTemplateModel {
|
||||||
this.urlBuilder = new UrlBuilder(vreq.getPortal());
|
this.urlBuilder = new UrlBuilder(vreq.getPortal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IndividualTemplateModel(Individual individual, VitroRequest vreq, LoginStatusBean loginStatusBean) {
|
||||||
|
this.individual = individual;
|
||||||
|
this.vreq = vreq;
|
||||||
|
this.loginStatusBean = loginStatusBean;
|
||||||
|
// Needed for getting portal-sensitive urls. Remove if multi-portal support is removed.
|
||||||
|
this.urlBuilder = new UrlBuilder(vreq.getPortal());
|
||||||
|
}
|
||||||
|
|
||||||
/* These methods perform some manipulation of the data returned by the Individual methods */
|
/* These methods perform some manipulation of the data returned by the Individual methods */
|
||||||
|
|
||||||
public String getProfileUrl() {
|
public String getProfileUrl() {
|
||||||
|
@ -129,11 +140,22 @@ public class IndividualTemplateModel extends BaseTemplateModel {
|
||||||
|
|
||||||
public GroupedPropertyList getPropertyList() {
|
public GroupedPropertyList getPropertyList() {
|
||||||
if (propertyList == null) {
|
if (propertyList == null) {
|
||||||
propertyList = new GroupedPropertyList(individual, vreq);
|
propertyList = new GroupedPropertyList(individual, vreq, loginStatusBean);
|
||||||
}
|
}
|
||||||
return propertyList;
|
return propertyList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getShowEditingLinks() {
|
||||||
|
// RY This will be improved later. What is important is not whether the user is a self-editor,
|
||||||
|
// but whether he has editing privileges on this profile.
|
||||||
|
return VitroRequestPrep.isSelfEditing(vreq) ||
|
||||||
|
loginStatusBean.isLoggedInAtLeast(LoginStatusBean.NON_EDITOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getShowAdminPanel() {
|
||||||
|
return loginStatusBean.isLoggedInAtLeast(LoginStatusBean.EDITOR);
|
||||||
|
}
|
||||||
|
|
||||||
/* These methods simply forward to the methods of the wrapped individual. It would be desirable to
|
/* These methods simply forward to the methods of the wrapped individual. It would be desirable to
|
||||||
* implement a scheme for proxying or delegation so that the methods don't need to be simply listed here.
|
* implement a scheme for proxying or delegation so that the methods don't need to be simply listed here.
|
||||||
* A Ruby-style method missing method would be ideal.
|
* A Ruby-style method missing method would be ideal.
|
||||||
|
|
|
@ -27,20 +27,20 @@ public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
||||||
private String propertyUri;
|
private String propertyUri;
|
||||||
private Map<String, String> data;
|
private Map<String, String> data;
|
||||||
|
|
||||||
private EditingHelper editLinkHelper;
|
private EditingHelper editingHelper;
|
||||||
private String objectUri = null;
|
private String objectUri = null;
|
||||||
private ObjectPropertyStatement objectPropertyStatement = null;
|
private ObjectPropertyStatement objectPropertyStatement = null;
|
||||||
|
|
||||||
|
|
||||||
ObjectPropertyStatementTemplateModel(String subjectUri, String propertyUri,
|
ObjectPropertyStatementTemplateModel(String subjectUri, String propertyUri,
|
||||||
String objectKey, Map<String, String> data, EditingHelper editLinkHelper) {
|
String objectKey, Map<String, String> data, EditingHelper editingHelper) {
|
||||||
this.subjectUri = subjectUri;
|
this.subjectUri = subjectUri;
|
||||||
this.propertyUri = propertyUri;
|
this.propertyUri = propertyUri;
|
||||||
this.data = data;
|
this.data = data;
|
||||||
this.editLinkHelper = editLinkHelper;
|
this.editingHelper = editingHelper;
|
||||||
|
|
||||||
// If the editLinkHelper is non-null, we are in edit mode, so create the necessary objects.
|
// If the editingHelper is non-null, we are in edit mode, so create the necessary objects.
|
||||||
if (this.editLinkHelper != null) {
|
if (this.editingHelper != null) {
|
||||||
objectUri = data.get(objectKey);
|
objectUri = data.get(objectKey);
|
||||||
objectPropertyStatement = new ObjectPropertyStatementImpl(subjectUri, propertyUri, objectUri);
|
objectPropertyStatement = new ObjectPropertyStatementImpl(subjectUri, propertyUri, objectUri);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
||||||
public String getEditUrl() {
|
public String getEditUrl() {
|
||||||
String editUrl = "";
|
String editUrl = "";
|
||||||
RequestedAction action = new EditObjPropStmt(objectPropertyStatement);
|
RequestedAction action = new EditObjPropStmt(objectPropertyStatement);
|
||||||
PolicyDecision decision = editLinkHelper.getPolicy().isAuthorized(editLinkHelper.getIds(), action);
|
PolicyDecision decision = editingHelper.getPolicy().isAuthorized(editingHelper.getIds(), action);
|
||||||
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
if (decision != null && decision.getAuthorized() == Authorization.AUTHORIZED) {
|
||||||
ParamMap params = new ParamMap(
|
ParamMap params = new ParamMap(
|
||||||
"subjectUri", subjectUri,
|
"subjectUri", subjectUri,
|
||||||
|
|
|
@ -61,8 +61,8 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
||||||
private PropertyListConfig config;
|
private PropertyListConfig config;
|
||||||
private String objectKey;
|
private String objectKey;
|
||||||
|
|
||||||
ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingHelper editLinkHelper) {
|
ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||||
super(op, editLinkHelper);
|
super(op, editingHelper);
|
||||||
setName(op.getDomainPublic());
|
setName(op.getDomainPublic());
|
||||||
|
|
||||||
// Get the config for this object property
|
// Get the config for this object property
|
||||||
|
@ -107,16 +107,16 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op,
|
protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op,
|
||||||
Individual subject, VitroRequest vreq, EditingHelper editLinkHelper) {
|
Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||||
if (op.getCollateBySubclass()) {
|
if (op.getCollateBySubclass()) {
|
||||||
try {
|
try {
|
||||||
return new CollatedObjectPropertyTemplateModel(op, subject, vreq, editLinkHelper);
|
return new CollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
||||||
} catch (InvalidConfigurationException e) {
|
} catch (InvalidConfigurationException e) {
|
||||||
log.error(e);
|
log.error(e);
|
||||||
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, editLinkHelper);
|
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, editLinkHelper);
|
return new UncollatedObjectPropertyTemplateModel(op, subject, vreq, editingHelper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 editLinkHelper) {
|
PropertyGroupTemplateModel(VitroRequest vreq, PropertyGroup group, Individual subject, EditingHelper editingHelper) {
|
||||||
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, editLinkHelper));
|
properties.add(ObjectPropertyTemplateModel.getObjectPropertyTemplateModel(op, subject, vreq, editingHelper));
|
||||||
} else {
|
} else {
|
||||||
properties.add(new DataPropertyTemplateModel((DataProperty)p, subject, vreq, editLinkHelper));
|
properties.add(new DataPropertyTemplateModel((DataProperty)p, subject, vreq, editingHelper));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,15 +18,15 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel {
|
||||||
private String name;
|
private String name;
|
||||||
private String uri;
|
private String uri;
|
||||||
protected Property property; // needed to get the edit links
|
protected Property property; // needed to get the edit links
|
||||||
protected EditingHelper editLinkHelper;
|
protected EditingHelper editingHelper;
|
||||||
|
|
||||||
PropertyTemplateModel(Property property, EditingHelper editLinkHelper) {
|
PropertyTemplateModel(Property property, EditingHelper editingHelper) {
|
||||||
// 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.uri = property.getURI();
|
this.uri = property.getURI();
|
||||||
this.property = property;
|
this.property = property;
|
||||||
this.editLinkHelper = editLinkHelper;
|
this.editingHelper = editingHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setName(String name) {
|
protected void setName(String name) {
|
||||||
|
|
|
@ -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 editLinkHelper) {
|
UncollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, EditingHelper editingHelper) {
|
||||||
super(op, subject, vreq, editLinkHelper);
|
super(op, subject, vreq, editingHelper);
|
||||||
|
|
||||||
/* 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, editLinkHelper));
|
propertyUri, objectKey, map, editingHelper));
|
||||||
}
|
}
|
||||||
|
|
||||||
postprocessStatementList(statements);
|
postprocessStatementList(statements);
|
||||||
|
|
|
@ -1,21 +1,13 @@
|
||||||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
<#-- Template for individual profile page -->
|
<#-- Generic template for individual profile page -->
|
||||||
|
|
||||||
<#import "lib-list.ftl" as l>
|
<#include "individual-setup.ftl">
|
||||||
<#import "lib-properties.ftl" as p>
|
|
||||||
<#assign core = "http://vivoweb.org/ontology/core#">
|
|
||||||
|
|
||||||
<#assign editingClass>
|
<#if individual.showAdminPanel>
|
||||||
<#if editStatus.showEditingLinks>editing<#else></#if>
|
|
||||||
</#assign>
|
|
||||||
|
|
||||||
<#if editStatus.showAdminPanel>
|
|
||||||
<#include "individual-adminPanel.ftl">
|
<#include "individual-adminPanel.ftl">
|
||||||
</#if>
|
</#if>
|
||||||
|
|
||||||
<#assign propertyGroups = individual.propertyList>
|
|
||||||
|
|
||||||
<section id="individual-intro" class="vcard" role="region">
|
<section id="individual-intro" class="vcard" role="region">
|
||||||
<section id="share-contact" role="region">
|
<section id="share-contact" role="region">
|
||||||
<#-- Thumbnail -->
|
<#-- Thumbnail -->
|
||||||
|
@ -48,6 +40,7 @@
|
||||||
<#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) -->
|
||||||
<#list overview.statements as statement>
|
<#list overview.statements as statement>
|
||||||
|
<@p.editingLinks statement showEditingLinks />
|
||||||
<p class="individual-overview">${statement.value}</p>
|
<p class="individual-overview">${statement.value}</p>
|
||||||
</#list>
|
</#list>
|
||||||
</#if>
|
</#if>
|
||||||
|
@ -87,8 +80,9 @@
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<#assign nameForOtherGroup = "other"> <#-- used by both individual-propertyGroupMenu.ftl and individual-properties.ftl -->
|
||||||
|
|
||||||
<#-- Property group menu -->
|
<#-- Property group menu -->
|
||||||
<#assign nameForOtherGroup = "other">
|
|
||||||
<#include "individual-propertyGroupMenu.ftl">
|
<#include "individual-propertyGroupMenu.ftl">
|
||||||
|
|
||||||
<#-- Ontology properties -->
|
<#-- Ontology properties -->
|
||||||
|
|
|
@ -30,13 +30,13 @@
|
||||||
<ul class="property-list" role="list">
|
<ul class="property-list" role="list">
|
||||||
<#-- data property -->
|
<#-- data property -->
|
||||||
<#if property.type == "data">
|
<#if property.type == "data">
|
||||||
<@p.dataPropertyList property.statements />
|
<@p.dataPropertyList property.statements showEditingLinks />
|
||||||
|
|
||||||
<#-- object property -->
|
<#-- object property -->
|
||||||
<#elseif property.collatedBySubclass> <#-- collated -->
|
<#elseif property.collatedBySubclass> <#-- collated -->
|
||||||
<@p.collatedObjectPropertyList property />
|
<@p.collatedObjectPropertyList property showEditingLinks />
|
||||||
<#else> <#-- uncollated -->
|
<#else> <#-- uncollated -->
|
||||||
<@p.objectPropertyList property.statements property.template />
|
<@p.objectPropertyList property.statements property.template showEditingLinks />
|
||||||
</#if>
|
</#if>
|
||||||
</ul>
|
</ul>
|
||||||
</article> <!-- end property -->
|
</article> <!-- end property -->
|
||||||
|
|
|
@ -4,56 +4,58 @@
|
||||||
Macros for generating property lists
|
Macros for generating property lists
|
||||||
------------------------------------------------------------------------------>
|
------------------------------------------------------------------------------>
|
||||||
|
|
||||||
<#macro dataPropertyList statements>
|
<#macro dataPropertyList statements showEditingLinks>
|
||||||
<#list statements as statement>
|
<#list statements as statement>
|
||||||
<@propertyListItem statement>${statement.value}</@propertyListItem>
|
<@propertyListItem statement showEditingLinks>${statement.value}</@propertyListItem>
|
||||||
</#list>
|
</#list>
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
<#macro collatedObjectPropertyList property>
|
<#macro collatedObjectPropertyList property showEditingLinks>
|
||||||
<#assign subclasses = property.subclasses>
|
<#assign subclasses = property.subclasses>
|
||||||
<#list subclasses?keys as subclass>
|
<#list subclasses?keys as subclass>
|
||||||
<li class="subclass">
|
<li class="subclass">
|
||||||
<h3>${subclass?lower_case}</h3>
|
<h3>${subclass?lower_case}</h3>
|
||||||
<ul class="subclass-property-list">
|
<ul class="subclass-property-list">
|
||||||
<@objectPropertyList subclasses[subclass] property.template />
|
<@objectPropertyList subclasses[subclass] property.template showEditingLinks />
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</#list>
|
</#list>
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
<#macro simpleObjectPropertyList property>
|
<#macro simpleObjectPropertyList property showEditingLinks>
|
||||||
<@objectPropertyList property.statements "propStatement-simple.ftl" />
|
<@objectPropertyList property.statements "propStatement-simple.ftl" showEditingLinks />
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
<#macro objectPropertyList statements template>
|
<#macro objectPropertyList statements template showEditingLinks>
|
||||||
<#list statements as statement>
|
<#list statements as statement>
|
||||||
<@propertyListItem statement><#include "${template}"></@propertyListItem>
|
<@propertyListItem statement showEditingLinks><#include "${template}"></@propertyListItem>
|
||||||
</#list>
|
</#list>
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
<#macro propertyListItem statement>
|
<#macro propertyListItem statement showEditingLinks>
|
||||||
<li role="listitem">
|
<li role="listitem">
|
||||||
<@editLink statement />
|
<@editingLinks statement showEditingLinks />
|
||||||
<@deleteLink statement />
|
|
||||||
<#nested>
|
<#nested>
|
||||||
</li>
|
</li>
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
|
<#macro editingLinks statement showEditingLinks>
|
||||||
|
<#if showEditingLinks>
|
||||||
|
<@editLink statement />
|
||||||
|
<@deleteLink statement />
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
||||||
|
|
||||||
<#macro editLink statement>
|
<#macro editLink statement>
|
||||||
<#if editStatus.showEditingLinks>
|
|
||||||
<#local url = statement.editUrl>
|
<#local url = statement.editUrl>
|
||||||
<#if url?has_content>
|
<#if url?has_content>
|
||||||
<a href="${url}">edit</a>
|
<a href="${url}">edit</a>
|
||||||
</#if>
|
</#if>
|
||||||
</#if>
|
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
<#macro deleteLink statement>
|
<#macro deleteLink statement>
|
||||||
<#if editStatus.showEditingLinks>
|
|
||||||
<#local url = statement.deleteUrl>
|
<#local url = statement.deleteUrl>
|
||||||
<#if url?has_content>
|
<#if url?has_content>
|
||||||
<a href="${url}">delete</a>
|
<a href="${url}">delete</a>
|
||||||
</#if>
|
</#if>
|
||||||
</#if>
|
|
||||||
</#macro>
|
</#macro>
|
Loading…
Add table
Reference in a new issue