NIHVIVO-2744 Display of mostSpecificType(s) on individual profile (in place of former moniker).
This commit is contained in:
parent
55c2f8f213
commit
31a8ec8b3a
3 changed files with 89 additions and 102 deletions
|
@ -72,15 +72,8 @@
|
||||||
<#-- Label -->
|
<#-- Label -->
|
||||||
<@p.label individual editable />
|
<@p.label individual editable />
|
||||||
|
|
||||||
<#-- Moniker / Preferred Title -->
|
<#-- Most-specific types -->
|
||||||
<#-- Use Preferred Title over Moniker if it is populated -->
|
<@p.mostSpecificTypes individual />
|
||||||
<#assign title = (propertyGroups.getProperty("${core}preferredTitle").firstValue)! />
|
|
||||||
<#if ! title?has_content>
|
|
||||||
<#assign title = individual.moniker>
|
|
||||||
</#if>
|
|
||||||
<#if title?has_content>
|
|
||||||
<span class="preferred-title">${title}</span>
|
|
||||||
</#if>
|
|
||||||
</h1>
|
</h1>
|
||||||
</#if>
|
</#if>
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,6 @@ import java.util.Map;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.openrdf.model.URI;
|
|
||||||
import org.openrdf.model.impl.URIImpl;
|
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
|
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||||
|
@ -25,6 +23,12 @@ import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||||
public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(IndividualTemplateModel.class);
|
private static final Log log = LogFactory.getLog(IndividualTemplateModel.class);
|
||||||
|
|
||||||
|
private static final String FOAF = "http://xmlns.com/foaf/0.1/";
|
||||||
|
private static final String CORE = "http://vivoweb.org/ontology/core#";
|
||||||
|
private static final String PERSON_CLASS = FOAF + "Person";
|
||||||
|
private static final String ORGANIZATION_CLASS = FOAF + "Organization";
|
||||||
|
|
||||||
private Map<String, String> qrData = null;
|
private Map<String, String> qrData = null;
|
||||||
|
|
||||||
public IndividualTemplateModel(Individual individual, VitroRequest vreq) {
|
public IndividualTemplateModel(Individual individual, VitroRequest vreq) {
|
||||||
|
@ -35,97 +39,15 @@ public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
||||||
return getUrl(Route.VISUALIZATION_SHORT.path());
|
return getUrl(Route.VISUALIZATION_SHORT.path());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Access methods for templates */
|
|
||||||
|
|
||||||
public boolean isPerson() {
|
|
||||||
return isVClass("http://xmlns.com/foaf/0.1/Person");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isOrganization() {
|
|
||||||
return isVClass("http://xmlns.com/foaf/0.1/Organization");
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCoAuthorVisUrl() {
|
|
||||||
|
|
||||||
String coauthorVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.COAUTHORSHIP_VIS_SHORT_URL + "/";
|
|
||||||
|
|
||||||
return getVisUrl(coauthorVisURL);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCoInvestigatorVisUrl() {
|
|
||||||
|
|
||||||
String coinvestigatorVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.COINVESTIGATOR_VIS_SHORT_URL + "/";
|
|
||||||
|
|
||||||
return getVisUrl(coinvestigatorVisURL);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getVisUrl(String coinvestigatorVisURL) {
|
|
||||||
boolean isUsingDefaultNameSpace = UrlBuilder.isUriInDefaultNamespace(
|
|
||||||
getUri(),
|
|
||||||
vreq);
|
|
||||||
|
|
||||||
if (isUsingDefaultNameSpace) {
|
|
||||||
|
|
||||||
return coinvestigatorVisURL + getLocalName();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
return UrlBuilder.addParams(
|
|
||||||
coinvestigatorVisURL,
|
|
||||||
new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, getUri()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTemporalGraphUrl() {
|
|
||||||
if (!isOrganization()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
String temporalVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.PUBLICATION_TEMPORAL_VIS_SHORT_URL + "/";
|
|
||||||
|
|
||||||
return getVisUrl(temporalVisURL);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMapOfScienceUrl() {
|
|
||||||
|
|
||||||
String mapOfScienceVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.MAP_OF_SCIENCE_VIS_SHORT_URL + "/";
|
|
||||||
|
|
||||||
return getVisUrl(mapOfScienceVisURL);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSelfEditingId() {
|
|
||||||
String id = null;
|
|
||||||
String idMatchingProperty = ConfigurationProperties.getBean(getServletContext()).getProperty("selfEditing.idMatchingProperty");
|
|
||||||
if (! StringUtils.isBlank(idMatchingProperty)) {
|
|
||||||
// Use assertions model to side-step filtering. We need to get the value regardless of whether the property
|
|
||||||
// is visible to the current user.
|
|
||||||
WebappDaoFactory wdf = vreq.getAssertionsWebappDaoFactory();
|
|
||||||
Collection<DataPropertyStatement> ids =
|
|
||||||
wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, idMatchingProperty);
|
|
||||||
if (ids.size() > 0) {
|
|
||||||
id = ids.iterator().next().getData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> doQrData() {
|
|
||||||
if(qrData == null)
|
|
||||||
qrData = generateQrData();
|
|
||||||
return qrData;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<String, String> generateQrData() {
|
private Map<String, String> generateQrData() {
|
||||||
String core = "http://vivoweb.org/ontology/core#";
|
|
||||||
String foaf = "http://xmlns.com/foaf/0.1/";
|
|
||||||
|
|
||||||
Map<String,String> qrData = new HashMap<String,String>();
|
Map<String,String> qrData = new HashMap<String,String>();
|
||||||
WebappDaoFactory wdf = vreq.getAssertionsWebappDaoFactory();
|
WebappDaoFactory wdf = vreq.getAssertionsWebappDaoFactory();
|
||||||
Collection<DataPropertyStatement> firstNames = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, foaf + "firstName");
|
Collection<DataPropertyStatement> firstNames = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, FOAF + "firstName");
|
||||||
Collection<DataPropertyStatement> lastNames = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, foaf + "lastName");
|
Collection<DataPropertyStatement> lastNames = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, FOAF + "lastName");
|
||||||
Collection<DataPropertyStatement> preferredTitles = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, core + "preferredTitle");
|
Collection<DataPropertyStatement> preferredTitles = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, CORE + "preferredTitle");
|
||||||
Collection<DataPropertyStatement> phoneNumbers = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, core + "phoneNumber");
|
Collection<DataPropertyStatement> phoneNumbers = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, CORE + "phoneNumber");
|
||||||
Collection<DataPropertyStatement> emails = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, core + "email");
|
Collection<DataPropertyStatement> emails = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, CORE + "email");
|
||||||
|
|
||||||
if(firstNames != null && ! firstNames.isEmpty())
|
if(firstNames != null && ! firstNames.isEmpty())
|
||||||
qrData.put("firstName", firstNames.toArray(new DataPropertyStatement[firstNames.size()])[0].getData());
|
qrData.put("firstName", firstNames.toArray(new DataPropertyStatement[firstNames.size()])[0].getData());
|
||||||
|
@ -153,4 +75,76 @@ public class IndividualTemplateModel extends BaseIndividualTemplateModel {
|
||||||
|
|
||||||
return qrData;
|
return qrData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Access methods for templates */
|
||||||
|
|
||||||
|
public boolean isPerson() {
|
||||||
|
return isVClass(PERSON_CLASS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isOrganization() {
|
||||||
|
return isVClass(ORGANIZATION_CLASS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCoAuthorVisUrl() {
|
||||||
|
String coauthorVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.COAUTHORSHIP_VIS_SHORT_URL + "/";
|
||||||
|
return getVisUrl(coauthorVisURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCoInvestigatorVisUrl() {
|
||||||
|
String coinvestigatorVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.COINVESTIGATOR_VIS_SHORT_URL + "/";
|
||||||
|
return getVisUrl(coinvestigatorVisURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getVisUrl(String coinvestigatorVisURL) {
|
||||||
|
boolean isUsingDefaultNameSpace = UrlBuilder.isUriInDefaultNamespace(
|
||||||
|
getUri(),
|
||||||
|
vreq);
|
||||||
|
|
||||||
|
if (isUsingDefaultNameSpace) {
|
||||||
|
return coinvestigatorVisURL + getLocalName();
|
||||||
|
} else {
|
||||||
|
return UrlBuilder.addParams(
|
||||||
|
coinvestigatorVisURL,
|
||||||
|
new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, getUri()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTemporalGraphUrl() {
|
||||||
|
if (!isOrganization()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String temporalVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.PUBLICATION_TEMPORAL_VIS_SHORT_URL + "/";
|
||||||
|
return getVisUrl(temporalVisURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMapOfScienceUrl() {
|
||||||
|
String mapOfScienceVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.MAP_OF_SCIENCE_VIS_SHORT_URL + "/";
|
||||||
|
return getVisUrl(mapOfScienceVisURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSelfEditingId() {
|
||||||
|
String id = null;
|
||||||
|
String idMatchingProperty = ConfigurationProperties.getBean(getServletContext()).getProperty("selfEditing.idMatchingProperty");
|
||||||
|
if (! StringUtils.isBlank(idMatchingProperty)) {
|
||||||
|
// Use assertions model to side-step filtering. We need to get the value regardless of whether the property
|
||||||
|
// is visible to the current user.
|
||||||
|
WebappDaoFactory wdf = vreq.getAssertionsWebappDaoFactory();
|
||||||
|
Collection<DataPropertyStatement> ids =
|
||||||
|
wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, idMatchingProperty);
|
||||||
|
if (ids.size() > 0) {
|
||||||
|
id = ids.iterator().next().getData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> doQrData() {
|
||||||
|
if(qrData == null)
|
||||||
|
qrData = generateQrData();
|
||||||
|
return qrData;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1190,7 +1190,7 @@ nav#alpha-browse-container {
|
||||||
font-size: 1.375em;
|
font-size: 1.375em;
|
||||||
color: #2485ae;
|
color: #2485ae;
|
||||||
}
|
}
|
||||||
#individual-intro span.preferred-title {
|
#individual-intro span.most-specific-type {
|
||||||
font-size: .825em;
|
font-size: .825em;
|
||||||
color: #5e6363;
|
color: #5e6363;
|
||||||
border-left: 1px solid #A6B1B0;
|
border-left: 1px solid #A6B1B0;
|
||||||
|
@ -1260,7 +1260,7 @@ ul.individual-urls-people li a {
|
||||||
color: #2485ae;
|
color: #2485ae;
|
||||||
line-height: 1.3em;
|
line-height: 1.3em;
|
||||||
}
|
}
|
||||||
h1.fn .preferred-title {
|
h1.fn .most-specific-type {
|
||||||
font-size: .825em;
|
font-size: .825em;
|
||||||
color: #5e6363;
|
color: #5e6363;
|
||||||
border-left: 1px solid #a6b1b0;
|
border-left: 1px solid #a6b1b0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue