NIHVIVO-193 Fixed custom short view bug: new code that looks for superclass custom short views was neglecting to look for the subclass's custom short view first.
This commit is contained in:
parent
60f47e51c3
commit
3cb92fac0c
1 changed files with 32 additions and 18 deletions
|
@ -190,27 +190,11 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
||||||
<c:param name="home" value="${portal.portalId}"/>
|
<c:param name="home" value="${portal.portalId}"/>
|
||||||
<c:param name="uri" value="${objPropertyStmt.object.URI}"/>
|
<c:param name="uri" value="${objPropertyStmt.object.URI}"/>
|
||||||
</c:url>
|
</c:url>
|
||||||
|
|
||||||
<%
|
<%
|
||||||
// Make this a method of some object: Individual or ...?
|
String customShortView = getCustomShortView(request, vcDao);
|
||||||
String customShortView = null;
|
|
||||||
Individual object = ((ObjectPropertyStatement)request.getAttribute("opStmt")).getObject();
|
|
||||||
List<VClass> vclasses = object.getVClasses();
|
|
||||||
|
|
||||||
vclassLoop: for (VClass vclass : vclasses) {
|
|
||||||
String vclassUri = vclass.getURI();
|
|
||||||
List<String> superClassUris = vcDao.getAllSuperClassURIs(vclassUri);
|
|
||||||
for (String superClassUri : superClassUris) {
|
|
||||||
VClass cl = vcDao.getVClassByURI(superClassUri);
|
|
||||||
customShortView = cl.getCustomShortView();
|
|
||||||
if (customShortView != null) {
|
|
||||||
break vclassLoop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
%>
|
%>
|
||||||
<c:remove var="opStmt" scope="request"/>
|
|
||||||
<c:set var="altRenderJsp" value="<%= customShortView %>" />
|
<c:set var="altRenderJsp" value="<%= customShortView %>" />
|
||||||
|
<c:remove var="opStmt" scope="request"/>
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${!empty altRenderJsp}">
|
<c:when test="${!empty altRenderJsp}">
|
||||||
<c:set scope="request" var="individual" value="${objPropertyStmt.object}"/>
|
<c:set scope="request" var="individual" value="${objPropertyStmt.object}"/>
|
||||||
|
@ -359,3 +343,33 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
|
||||||
} // end for (Property p : g.getPropertyList()
|
} // end for (Property p : g.getPropertyList()
|
||||||
%>
|
%>
|
||||||
|
|
||||||
|
<%!
|
||||||
|
// Get custom short view from either the object's class or one of its superclasses.
|
||||||
|
// This is needed because the inference update happens asynchronously, so when a new
|
||||||
|
// property has been added and the page is reloaded, the custom short view from a
|
||||||
|
// superclass may not have been inferred yet.
|
||||||
|
private String getCustomShortView(HttpServletRequest request, VClassDao vcDao) {
|
||||||
|
String customShortView = null;
|
||||||
|
Individual object = ((ObjectPropertyStatement)request.getAttribute("opStmt")).getObject();
|
||||||
|
List<VClass> vclasses = object.getVClasses();
|
||||||
|
|
||||||
|
vclassLoop: for (VClass vclass : vclasses) {
|
||||||
|
// Use this class's custom short view, if there is one
|
||||||
|
customShortView = vclass.getCustomShortView();
|
||||||
|
if (customShortView != null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Otherwise, check for superclass custom short views
|
||||||
|
String vclassUri = vclass.getURI();
|
||||||
|
List<String> superClassUris = vcDao.getAllSuperClassURIs(vclassUri);
|
||||||
|
for (String superClassUri : superClassUris) {
|
||||||
|
VClass vc = vcDao.getVClassByURI(superClassUri);
|
||||||
|
customShortView = vc.getCustomShortView();
|
||||||
|
if (customShortView != null) {
|
||||||
|
break vclassLoop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return customShortView;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
Loading…
Add table
Reference in a new issue