viva la property groups! NIHVIVO-398
317
productMods/templates/entity/entityBasic.jsp
Normal file
|
@ -0,0 +1,317 @@
|
|||
<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%>
|
||||
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Individual" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.VClass" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.EditConfiguration" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.EditSubmission" %>
|
||||
<%@ page import="edu.cornell.mannlib.vedit.beans.LoginFormBean" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest"%>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.filters.VitroRequestPrep" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Link" %>
|
||||
|
||||
<%@ page import="org.apache.commons.logging.Log" %>
|
||||
<%@ page import="org.apache.commons.logging.LogFactory" %>
|
||||
|
||||
<%@ page import="java.util.List" %>
|
||||
|
||||
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
|
||||
<%@ taglib uri="http://vitro.mannlib.cornell.edu/vitro/tags/StringProcessorTag" prefix="p" %>
|
||||
<%@ taglib uri="http://vitro.mannlib.cornell.edu/vitro/tags/PropertyEditLink" prefix="edLnk" %>
|
||||
|
||||
<%@ page errorPage="/error.jsp"%>
|
||||
<%!
|
||||
public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.templates.entity.entityBasic.jsp");
|
||||
%>
|
||||
<%
|
||||
log.debug("Starting entityBasic.jsp");
|
||||
Individual entity = (Individual)request.getAttribute("entity");
|
||||
%>
|
||||
|
||||
<c:set var="labelUri" value="http://www.w3.org/2000/01/rdf-schema#label" />
|
||||
<c:set var="typeUri" value="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" />
|
||||
<c:set var="vitroUri" value="http://vitro.mannlib.cornell.edu/ns/vitro/0.7#" />
|
||||
|
||||
<c:if test="${!empty entityURI}">
|
||||
<c:set var="myEntityURI" scope="request" value="${entityURI}"/>
|
||||
<%
|
||||
try {
|
||||
VitroRequest vreq = new VitroRequest(request);
|
||||
entity = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI((String)request.getAttribute("myEntityURI"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
%>
|
||||
</c:if>
|
||||
|
||||
<%
|
||||
|
||||
if (entity == null){
|
||||
String e="entityBasic.jsp expects that request attribute 'entity' be set to the Entity object to display.";
|
||||
throw new JspException(e);
|
||||
}
|
||||
|
||||
if (VitroRequestPrep.isSelfEditing(request) || LoginFormBean.loggedIn(request, LoginFormBean.NON_EDITOR) /* minimum level*/) {
|
||||
request.setAttribute("showSelfEdits",Boolean.TRUE);
|
||||
}%>
|
||||
<c:if test="${sessionScope.loginHandler != null &&
|
||||
sessionScope.loginHandler.loginStatus == 'authenticated' &&
|
||||
sessionScope.loginHandler.loginRole >= LoginFormBean.NON_EDITOR}">
|
||||
<c:set var="showCuratorEdits" value="${true}"/>
|
||||
</c:if>
|
||||
|
||||
<c:set var="showEdits" value="${showSelfEdits || showCuratorEdits}" scope="request"/>
|
||||
<c:set var="editingClass" value="${showEdits ? 'editing' : ''}" scope="request"/>
|
||||
|
||||
<c:set var="themeDir"><c:out value="${portalBean.themeDir}" /></c:set>
|
||||
<%
|
||||
//anytime we are at an entity page we shouldn't have an editing config or submission
|
||||
session.removeAttribute("editjson");
|
||||
EditConfiguration.clearAllConfigsInSession(session);
|
||||
EditSubmission.clearAllEditSubmissionsInSession(session);
|
||||
%>
|
||||
|
||||
<c:set var='entity' value='${requestScope.entity}'/><%/* just moving this into page scope for easy use */ %>
|
||||
<c:set var='entityMergedPropsListJsp' value='/entityMergedPropList'/>
|
||||
<c:set var='portal' value='${currentPortalId}'/>
|
||||
<c:set var='portalBean' value='${currentPortal}'/>
|
||||
|
||||
|
||||
<c:set var='themeDir'><c:out value='${portalBean.themeDir}' /></c:set>
|
||||
|
||||
<div id="content">
|
||||
<div id="personWrap">
|
||||
<jsp:include page="entityAdmin.jsp"/>
|
||||
|
||||
<div class="contents entity ${editingClass}">
|
||||
|
||||
<div id="labelAndMoniker">
|
||||
<c:choose>
|
||||
<c:when test="${!empty relatedSubject}">
|
||||
<h2><p:process>${relatingPredicate.domainPublic} for ${relatedSubject.name}</p:process></h2>
|
||||
<c:url var="backToSubjectLink" value="/entity">
|
||||
<c:param name="home" value="${portalBean.portalId}"/>
|
||||
<c:param name="uri" value="${relatedSubject.URI}"/>
|
||||
</c:url>
|
||||
<p><a href="${backToSubjectLink}">← return to ${relatedSubject.name}</a></p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
|
||||
<%-- Label --%>
|
||||
<div class="datatypePropertyValue" id="label">
|
||||
<div class="statementWrap">
|
||||
<h2><p:process>${entity.name}</p:process></h2>
|
||||
<c:if test="${showEdits}">
|
||||
<c:set var="editLinks"><edLnk:editLinks item="<%= VitroVocabulary.LABEL %>" data="${entity.name}" icons="false"/></c:set>
|
||||
<c:if test="${!empty editLinks}"><span class="editLinks">${editLinks}</span></c:if>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%-- Moniker--%>
|
||||
<c:if test="${!empty entity.moniker}">
|
||||
<div class="datatypeProperties">
|
||||
<div class="datatypePropertyValue" id="moniker">
|
||||
<div class="statementWrap">
|
||||
<p:process><em class="moniker">${entity.moniker}</em></p:process>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div> <!-- end labelAndMoniker -->
|
||||
|
||||
<!-- START Sparkline Visualization -->
|
||||
<jsp:include page="sparklineVisualization.jsp"/>
|
||||
<!-- END Sparkline Visualization -->
|
||||
|
||||
<%-- Thumbnail --%>
|
||||
<c:set var="isPerson" value='<%= entity.isVClass("http://xmlns.com/foaf/0.1/Person") %>' />
|
||||
<c:set var="hasImage" value="${!empty entity.thumbUrl}" />
|
||||
<c:set var="imageLinks"><edLnk:editLinks item="<%= VitroVocabulary.IND_MAIN_IMAGE %>" icons="false" /></c:set>
|
||||
<c:choose>
|
||||
<c:when test="${!isPerson && !hasImage}">
|
||||
<c:if test="${showEdits && !empty imageLinks}">
|
||||
<div id="dprop-vitro-image" class="propsItem ${editingClass}">
|
||||
<h3 class="propertyName">image</h3>
|
||||
${imageLinks}
|
||||
</div>
|
||||
</c:if>
|
||||
</c:when>
|
||||
<c:when test="${isPerson && !hasImage}">
|
||||
<div id="dprop-vitro-image" class="propsItem ${editingClass}">
|
||||
<div class="datatypeProperties">
|
||||
<div class="datatypePropertyValue">
|
||||
<div class="statementWrap thumbnail">
|
||||
<img src="<c:url value='/images/dummyImages/person.thumbnail.jpg'/>"
|
||||
title="no image" alt="" width="115"/>
|
||||
<c:if test="${showEdits}">
|
||||
<span class="editLinks">${imageLinks}</span>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise> <%-- hasImage --%>
|
||||
<div id="dprop-vitro-image" class="propsItem ${editingClass}">
|
||||
<div class="datatypeProperties">
|
||||
<div class="datatypePropertyValue">
|
||||
<div class="statementWrap thumbnail">
|
||||
<a class="image" href="<c:url value='${entity.imageUrl}'/>">
|
||||
<img src="<c:url value='${entity.thumbUrl}'/>"
|
||||
title="click to view larger image"
|
||||
alt="" width="115"/>
|
||||
</a>
|
||||
<c:if test="${showEdits}">
|
||||
<span class="editLinks">${imageLinks}</span>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<jsp:include page="entityCitation.jsp" />
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<%-- Links --%>
|
||||
<c:if test="${ showEdits || !empty entity.url || !empty entity.linksList }">
|
||||
<div id="dprop-vitro-links" class="propsItem ${editingClass}">
|
||||
<c:set var="canEditPrimaryLinks"><edLnk:editLinks item="<%= VitroVocabulary.PRIMARY_LINK %>" icons="false"/></c:set>
|
||||
<c:set var="canEditAdditionalLinks"><edLnk:editLinks item="<%= VitroVocabulary.ADDITIONAL_LINK %>" icons="false"/></c:set>
|
||||
<c:if test="${showEdits and !empty canEditPrimaryLinks and !empty canEditAdditionalLinks}">
|
||||
<h3 class="propertyName">web pages</h3>
|
||||
<c:choose>
|
||||
<c:when test="${empty entity.url}">
|
||||
<c:set var="addUrlPredicate" value="<%= VitroVocabulary.PRIMARY_LINK %>" />
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="addUrlPredicate" value="<%= VitroVocabulary.ADDITIONAL_LINK %>" />
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<edLnk:editLinks item="${addUrlPredicate}" icons="false" />
|
||||
</c:if>
|
||||
<ul class="externalLinks properties">
|
||||
<%-- Primary link --%>
|
||||
<c:if test="${!empty entity.anchor}">
|
||||
<c:choose>
|
||||
<c:when test="${!empty entity.url}">
|
||||
<c:url var="entityUrl" value="${entity.url}" />
|
||||
<li class="primary">
|
||||
<span class="statementWrap">
|
||||
<a class="externalLink" href="<c:out value="${entityUrl}"/>"><p:process>${entity.anchor}</p:process></a>
|
||||
<c:if test="${showEdits}">
|
||||
<em>(primary link)</em>
|
||||
<c:set var="editLinks"><edLnk:editLinks item="<%= VitroVocabulary.PRIMARY_LINK %>" data="${entity.primaryLink.URI}" icons="false"/></c:set>
|
||||
<c:if test="${!empty editLinks}"><span class="editLinks">${editLinks}</span></c:if>
|
||||
</c:if>
|
||||
</span>
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<%-- RY For now, not providing editing links for anchor text with no url. Should fix. --%>
|
||||
<li class="primary"><span class="externalLink"><p:process>${entity.anchor}</p:process></span></li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
||||
<%-- Additional links --%>
|
||||
<c:if test="${!empty entity.linksList }">
|
||||
<c:forEach items="${entity.linksList}" var='link' varStatus="count">
|
||||
<c:url var="linkUrl" value="${link.url}" />
|
||||
<c:choose>
|
||||
<c:when test="${empty entity.url && count.first==true}"><li class="first"></c:when>
|
||||
<c:otherwise><li></c:otherwise>
|
||||
</c:choose>
|
||||
<span class="statementWrap">
|
||||
<a class="externalLink" href="<c:out value="${linkUrl}"/>"><p:process>${link.anchor}</p:process></a>
|
||||
<c:if test="${showEdits}">
|
||||
<em>(additional link)</em>
|
||||
<c:set var="editLinks"><edLnk:editLinks item="<%= VitroVocabulary.ADDITIONAL_LINK %>" data="${link.URI}" icons="false"/></c:set>
|
||||
<c:if test="${!empty editLinks}"><span class="editLinks">${editLinks}</span></c:if>
|
||||
</c:if>
|
||||
</span>
|
||||
</li>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div> <!-- end dprop-vitro-links -->
|
||||
</c:if>
|
||||
|
||||
<%-- Description --%>
|
||||
<c:if test="${ showEdits || !empty entity.description}">
|
||||
<c:if test="${not empty entity.description }">
|
||||
<c:set var="editLinksForExisitngDesc"><edLnk:editLinks item="<%= VitroVocabulary.DESCRIPTION %>" data="${entity.description}" icons="false"/></c:set>
|
||||
</c:if>
|
||||
<c:set var="editLinksForNewDesc"><edLnk:editLinks item="<%= VitroVocabulary.DESCRIPTION %>" icons="false"/></c:set>
|
||||
<c:set var="mayEditDesc" value="${showEdits && ((empty entity.description and not empty editLinksForNewDesc) or (not empty entity.description and not empty editLinksForExisitngDesc))}"/>
|
||||
|
||||
<c:if test="${mayEditDesc || ! empty entity.description }">
|
||||
<div id="dprop-vitro-description" class="propsItem ${editingClass}">
|
||||
<h3 class="propertyName">description</h3> ${editLinksForNewDesc}
|
||||
</c:if>
|
||||
|
||||
<c:if test="${!empty entity.description}">
|
||||
<div class="datatypeProperties">
|
||||
<div class="datatypePropertyValue">
|
||||
<div class="statementWrap">
|
||||
<div class="description"><p:process>${entity.description}</p:process></div>
|
||||
<c:if test="${showEdits && !empty editLinksForExisitngDesc}">
|
||||
<span class="editLinks">${editLinksForExisitngDesc}</span>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${mayEditDesc || ! empty entity.description }">
|
||||
</div>
|
||||
</c:if>
|
||||
</c:if>
|
||||
|
||||
|
||||
<%-- Ontology properties --%>
|
||||
<c:import url="${entityMergedPropsListJsp}">
|
||||
<c:param name="mode" value="${showEdits ? 'edit' : ''}"/>
|
||||
<c:param name="grouped" value="true"/>
|
||||
<%-- unless a value is provided, properties not assigned to a group will not have a tab or appear on the page --%>
|
||||
<c:param name="unassignedPropsGroupName" value=""/>
|
||||
</c:import>
|
||||
|
||||
<%-- Blurb --%>
|
||||
<c:if test="${!empty entity.blurb}">
|
||||
<div class="datatypeProperties">
|
||||
<div class="datatypePropertyValue">
|
||||
<div class="statementWrap">
|
||||
<p:process><div class="description">${entity.blurb}</div></p:process>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<%-- Citation, if no thumbnail --%>
|
||||
<c:if test="${empty entity.thumbUrl}">
|
||||
<jsp:include page="entityCitation.jsp" />
|
||||
</c:if>
|
||||
|
||||
<%-- Keywords --%>
|
||||
<c:if test="${!empty entity.keywordString}">
|
||||
<p:process><p id="keywords">Keywords: ${entity.keywordString}</p></p:process>
|
||||
</c:if>
|
||||
|
||||
${requestScope.servletButtons}
|
||||
|
||||
<!--
|
||||
<c:if test="${not empty entityLinkedDataURL}">
|
||||
<c:url var="rdfImg" value="/images/edit_icons/rdf_w3c_icon48.gif"/>
|
||||
<a href="${entityLinkedDataURL}" title="get this as RDF/XML"><img src="${rdfImg}"/></a>
|
||||
</c:if>
|
||||
-->
|
||||
</div> <!-- contents -->
|
||||
</div> <!-- personWrap -->
|
||||
</div> <!-- content -->
|
||||
|
||||
<script type="text/javascript" src="/vivo/js/imageUpload/imageUploadUtils.js"></script>
|
||||
|
||||
|
306
productMods/templates/entity/entityMergedPropsList.jsp
Normal file
|
@ -0,0 +1,306 @@
|
|||
<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%>
|
||||
|
||||
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||
<%@ taglib uri="http://vitro.mannlib.cornell.edu/vitro/tags/PropertyEditLink" prefix="edLnk" %>
|
||||
<%@ taglib uri="http://vitro.mannlib.cornell.edu/vitro/tags/StringProcessorTag" prefix="p" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Individual" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Portal" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.PropertyInstanceDao" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.DataPropertyDao" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.PropertyInstance" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Property" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.KeywordProperty" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.PropertyGroupDao" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.ObjectPropertyDao" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataProperty" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.RdfLiteralHash" %>
|
||||
<%@ page import="java.util.Collection" %>
|
||||
<%@ page import="java.util.Collections" %>
|
||||
<%@ page import="java.util.Comparator" %>
|
||||
<%@ page import="java.util.List" %>
|
||||
<%@ page import="java.util.ArrayList" %>
|
||||
<%@ page import="java.util.Iterator" %>
|
||||
<%@ page import="java.util.HashSet" %>
|
||||
<%@ page import="org.apache.commons.logging.Log" %>
|
||||
<%@ page import="org.apache.commons.logging.LogFactory" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.filters.VitroRequestPrep" %>
|
||||
<%@ page import="edu.cornell.mannlib.vedit.beans.LoginFormBean" %>
|
||||
<jsp:useBean id="loginHandler" class="edu.cornell.mannlib.vedit.beans.LoginFormBean" scope="session" />
|
||||
<%!
|
||||
public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.templates.entity.entityMergedPropsList.jsp");
|
||||
%>
|
||||
<% if( VitroRequestPrep.isSelfEditing(request) ) {
|
||||
log.debug("setting showSelfEdits true");%>
|
||||
<c:set var="showSelfEdits" value="${true}"/>
|
||||
<% }
|
||||
if (loginHandler!=null && loginHandler.getLoginStatus()=="authenticated" && Integer.parseInt(loginHandler.getLoginRole())>=loginHandler.getNonEditor()) {
|
||||
log.debug("setting showCuratorEdits true");%>
|
||||
<c:set var="showCuratorEdits" value="${true}"/>
|
||||
<c:set var='themeDir'><c:out value='${portalBean.themeDir}' /></c:set>
|
||||
<% }
|
||||
String unassignedPropGroupName=null;
|
||||
String unassignedName = (String) request.getAttribute("unassignedPropsGroupName");
|
||||
if (unassignedName != null && unassignedName.length()>0) {
|
||||
unassignedPropGroupName=unassignedName;
|
||||
log.debug("found temp group attribute \""+unassignedName+"\" for unassigned properties");
|
||||
}%>
|
||||
<c:set var='entity' value='${requestScope.entity}'/><%-- just moving this into page scope for easy use --%>
|
||||
<c:set var='portal' value='${requestScope.portalBean}'/><%-- likewise --%>
|
||||
<c:set var="hiddenDivCount" value="0"/>
|
||||
<% Individual subject = (Individual) request.getAttribute("entity");
|
||||
if (subject==null) {
|
||||
throw new Error("Subject individual must be in request scope for entityMergedPropsList.jsp");
|
||||
}
|
||||
|
||||
|
||||
// Nick wants not to use explicit parameters to trigger visibility of a div, but for now we don't just want to always show the 1st one
|
||||
String openingGroupLocalName = (String) request.getParameter("curgroup");
|
||||
VitroRequest vreq = new VitroRequest(request);
|
||||
// added to permit distinguishing links outside the current portal
|
||||
int currentPortalId = -1;
|
||||
Portal currentPortal = vreq.getPortal();
|
||||
if (currentPortal!=null) {
|
||||
currentPortalId = currentPortal.getPortalId();
|
||||
}
|
||||
|
||||
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
|
||||
PropertyGroupDao pgDao = wdf.getPropertyGroupDao();
|
||||
ArrayList<PropertyGroup> groupsList = (ArrayList) request.getAttribute("groupsList");
|
||||
if (groupsList!=null && groupsList.size()>0) { // first do the list of headers
|
||||
if (groupsList.size()==1) {
|
||||
for (PropertyGroup pg : groupsList) {
|
||||
if (unassignedPropGroupName != null && !unassignedPropGroupName.equalsIgnoreCase(pg.getName())) {
|
||||
log.debug("only one group ["+pg.getName() +"] so rendering without group headers");
|
||||
}
|
||||
request.setAttribute("mergedList",pg.getPropertyList());
|
||||
}
|
||||
%><jsp:include page="entityMergedPropsListUngrouped.jsp" flush="true"/><%
|
||||
return;
|
||||
}%>
|
||||
|
||||
<%--
|
||||
<ul id="profileCats">
|
||||
<% for (PropertyGroup pg : groupsList ) {
|
||||
if (openingGroupLocalName == null || openingGroupLocalName.equals("")) {
|
||||
openingGroupLocalName = pg.getLocalName();
|
||||
}
|
||||
String styleStr = "display: inline;";
|
||||
if (openingGroupLocalName.equals(pg.getLocalName())) {%>
|
||||
<li class="currentCat"><a id="currentCat" href="#<%=pg.getLocalName()%>" title="<%=pg.getName()%>"><%=pg.getName()%></a></li>
|
||||
<% } else { %>
|
||||
<li><a href="#<%=pg.getLocalName()%>" title="<%=pg.getName()%>"><%=pg.getName()%></a></li>
|
||||
<% }
|
||||
} %>
|
||||
</ul>
|
||||
--%>
|
||||
|
||||
|
||||
<% // now display the properties themselves, by group
|
||||
for (PropertyGroup g : groupsList) {%>
|
||||
<c:set var="group" value="<%=g%>"/>
|
||||
<c:set var="groupStyle" value="display: block;"/>
|
||||
<c:if test="${group.statementCount==0}"><c:set var="groupStyle" value="display: block"/></c:if>
|
||||
|
||||
|
||||
<%-- Getting the count of properties in each group --%>
|
||||
<c:set var="counter" value="0"/>
|
||||
<c:set var="propTotal" value="0"/>
|
||||
<% int propTotal = g.getPropertyList().size(); %>
|
||||
<c:set var="propTotal" value="<%=propTotal%>" />
|
||||
|
||||
|
||||
<div class="propsCategory" id="<%=g.getLocalName()%>">
|
||||
<h3><strong><%=g.getName()%></strong></h3>
|
||||
<div class="propsWrap">
|
||||
<% for (Property p : g.getPropertyList()) {%>
|
||||
<% if (p instanceof ObjectProperty) {
|
||||
ObjectProperty op = (ObjectProperty)p;%>
|
||||
<c:set var="objProp" value="<%=op%>"/>
|
||||
<c:set var="editableInSomeWay" value="${false}"/>
|
||||
<c:if test="${showSelfEdits || showCuratorEdits}">
|
||||
<edLnk:editLinks item="${objProp}" var="links" />
|
||||
<c:if test="${!empty links}">
|
||||
<c:set var="editableInSomeWay" value="${true}"/>
|
||||
</c:if>
|
||||
</c:if>
|
||||
<c:set var="objStyle" value="display: block;"/>
|
||||
|
||||
<%-- rjy7 We have a logic problem here: if the custom short view dictates that the item NOT be rendered,
|
||||
and because of this there are NO items to render, we shouldn't show the label when not in edit mode.
|
||||
Example: people ( = positionHistory) of an organization don't render if the position end date is in the past.
|
||||
So the organization might not have any current people, in which case we shouldn't show the "people" label.
|
||||
We need to compute objRows on the basis of the rendering, not the number of objectPropertyStatements.
|
||||
See NIHVIVO-512. --%>
|
||||
|
||||
<c:set var="objRows" value="${fn:length(objProp.objectPropertyStatements)}"/>
|
||||
<c:if test="${objRows==0}"><c:set var="objStyle" value="display: block;"/></c:if>
|
||||
<c:if test="${editableInSomeWay || objRows>0}">
|
||||
<c:set var="first" value=""/><c:if test="${counter == 0}"><c:set var="first" value=" first"/></c:if>
|
||||
<c:set var="last" value=""/><c:if test="${(counter+1) == propTotal}"><c:set var="last" value=" last"/></c:if>
|
||||
<div class="propsItem${first}${last}" id="${objProp.localName}">
|
||||
<h4>${objProp.editLabel}</h4>
|
||||
<c:if test="${showSelfEdits || showCuratorEdits}"><edLnk:editLinks item="${objProp}" icons="false" /></c:if>
|
||||
<c:set var="displayLimit" value="${objProp.domainDisplayLimit}"/>
|
||||
|
||||
<c:if test="${displayLimit<0}">
|
||||
<c:set var="displayLimit" value="32"/> <% /* arbitrary limit if value is unset, i.e. -1 */ %>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${objRows>0}">
|
||||
<ul class='properties'>
|
||||
</c:if>
|
||||
<c:forEach items="${objProp.objectPropertyStatements}" var="objPropertyStmt">
|
||||
<li><span class="statementWrap">
|
||||
<c:set var="opStmt" value="${objPropertyStmt}" scope="request"/>
|
||||
<c:url var="propertyLink" value="/entity">
|
||||
<c:param name="home" value="${portal.portalId}"/>
|
||||
<c:param name="uri" value="${objPropertyStmt.object.URI}"/>
|
||||
<%--
|
||||
<% ObjectPropertyStatement oStmt = (ObjectPropertyStatement)request.getAttribute("opStmt");
|
||||
if (oStmt!=null) {
|
||||
Individual obj= (Individual)oStmt.getObject();
|
||||
if (obj != null) {
|
||||
if (!obj.doesFlag1Match(currentPortalId)) {%>
|
||||
<c:param name="jump" value="true"/>
|
||||
<% }
|
||||
}
|
||||
}%>
|
||||
--%>
|
||||
</c:url>
|
||||
<c:remove var="opStmt" scope="request"/>
|
||||
<c:forEach items="${objPropertyStmt.object.VClasses}" var="type">
|
||||
<c:if test="${!empty type.customShortView}">
|
||||
<c:set var="altRenderJsp" value="${type.customShortView}"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:choose>
|
||||
<c:when test="${!empty altRenderJsp}">
|
||||
<c:set scope="request" var="individual" value="${objPropertyStmt.object}"/>
|
||||
<c:set scope="request" var="predicateUri" value="${objProp.URI}"/>
|
||||
<jsp:include page="${altRenderJsp}" flush="true"/>
|
||||
<c:remove var="altRenderJsp"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<a class="propertyLink" href='<c:out value="${propertyLink}"/>'><p:process><c:out value="${objPropertyStmt.object.name}"/></p:process></a>
|
||||
<c:if test="${!empty objPropertyStmt.object.moniker}">
|
||||
<p:process><c:out value="| ${objPropertyStmt.object.moniker}"/></p:process>
|
||||
</c:if>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:if test="${showSelfEdits || showCuratorEdits}">
|
||||
<c:set var="editLinks"><edLnk:editLinks item="${objPropertyStmt}" icons="false"/></c:set>
|
||||
<c:if test="${!empty editLinks}"><span class="editLinks">${editLinks}</span></c:if>
|
||||
<c:if test="${empty editLinks}"><em class="nonEditable">(non-editable)</em></c:if>
|
||||
</c:if>
|
||||
</span></li>
|
||||
</c:forEach>
|
||||
<c:if test="${objRows > 0}"></ul></c:if>
|
||||
</div><!-- ${objProp.localName} -->
|
||||
</c:if>
|
||||
<% } else if (p instanceof DataProperty) {
|
||||
DataProperty dp = (DataProperty)p;%>
|
||||
<c:set var="dataProp" value="<%=dp%>"/>
|
||||
<c:set var="dataRows" value="${fn:length(dataProp.dataPropertyStatements)}"/>
|
||||
<c:set var="dataStyle" value="display: block;"/>
|
||||
<c:set var="displayLimit" value="${dataProp.displayLimit}"/>
|
||||
<c:if test="${dataRows==0}"><c:set var="dataStyle" value="display: block;"/></c:if>
|
||||
|
||||
<c:set var="first" value=""/><c:if test="${counter == 0}"><c:set var="first" value=" first"/></c:if>
|
||||
<c:set var="last" value=""/><c:if test="${(counter+1) == propTotal}"><c:set var="last" value=" last"/></c:if>
|
||||
<c:set var="multiItem" value=""/><c:if test="${dataRows > 1 && displayLimit == 1}"><c:set var="multiItem" value=" multiItem"/></c:if>
|
||||
<c:set var="addable" value=""/><c:if test="${dataRows >= 1 && displayLimit > 1}"><c:set var="addable" value=" addable"/></c:if>
|
||||
|
||||
<div id="${dataProp.localName}" class="propsItem dataItem${first}${last}${multiItem}${addable}" style="${dataStyle}">
|
||||
<h4>${dataProp.editLabel}</h4>
|
||||
<c:if test="${showSelfEdits || showCuratorEdits}">
|
||||
<c:choose>
|
||||
<c:when test="${dataRows == 1 && displayLimit==1 }">
|
||||
<%-- just put in a single "edit" link, not an "add" link that expands to reveal edit/delete links --%>
|
||||
<c:set var="editLinks"><edLnk:editLinks item="${dataProp.dataPropertyStatements[0]}" icons="false"/></c:set>
|
||||
<c:if test="${!empty editLinks}"><span class="editLinks">${editLinks}</span></c:if>
|
||||
<c:if test="${empty editLinks}"><em class="nonEditable">(non-editable)</em></c:if>
|
||||
</c:when>
|
||||
<c:otherwise><%-- creates an add link, even if displayLimit is unset, i.e. -1 --%>
|
||||
<edLnk:editLinks item="${dataProp}" icons="false"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
<c:if test="${displayLimit<0}">
|
||||
<%-- set to an arbitrary but high positive limit if unset on property, i.e. -1 --%>
|
||||
<c:set var="displayLimit" value="32"/>
|
||||
</c:if>
|
||||
<c:if test="${fn:length(dataProp.dataPropertyStatements)-displayLimit==1}">
|
||||
<%-- don't leave just one statement to expand --%>
|
||||
<c:set var="displayLimit" value="${displayLimit+1}"/>
|
||||
</c:if>
|
||||
<%-- c:if test="${displayLimit < 0}"><c:set var="displayLimit" value="20"/></c:if --%>
|
||||
<c:if test="${dataRows > 0}">
|
||||
<div class="datatypeProperties">
|
||||
<c:if test="${dataRows > 1}"><ul class="datatypePropertyValue"></c:if>
|
||||
<c:if test="${dataRows == 1}"><div class="datatypePropertyValue"></c:if>
|
||||
<c:forEach items="${dataProp.dataPropertyStatements}" var="dataPropertyStmt">
|
||||
<p:process>
|
||||
<c:choose>
|
||||
<c:when test='${dataRows==1}'>
|
||||
<span class="statementWrap">
|
||||
${dataPropertyStmt.data}
|
||||
<c:if test='${displayLimit>1 && (showSelfEdits || showCuratorEdits)}'>
|
||||
<c:set var="editLinks"><edLnk:editLinks item="${dataPropertyStmt}" icons="false"/></c:set>
|
||||
<c:if test="${!empty editLinks}"><span class="editLinks">${editLinks}</span></c:if>
|
||||
<c:if test="${empty editLinks}"><em class="nonEditable">(non-editable)</em></c:if>
|
||||
</c:if>
|
||||
</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li><span class="statementWrap">
|
||||
${dataPropertyStmt.data}
|
||||
<c:if test="${dataRows > 1 || displayLimit != 1 }">
|
||||
<c:if test="${showSelfEdits || showCuratorEdits}">
|
||||
<c:set var="editLinks"><edLnk:editLinks item="${dataPropertyStmt}" icons="false"/></c:set>
|
||||
<c:if test="${!empty editLinks}"><span class="editLinks">${editLinks}</span></c:if>
|
||||
<c:if test="${empty editLinks}"><em class="nonEditable">(non-editable)</em></c:if>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</span></li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</p:process>
|
||||
</c:forEach>
|
||||
<c:choose>
|
||||
<c:when test="${dataRows==1}"></div></c:when>
|
||||
<c:otherwise></ul></c:otherwise>
|
||||
</c:choose>
|
||||
</div><!-- datatypeProperties -->
|
||||
</c:if>
|
||||
</div><!-- ${dataProp.localName} -->
|
||||
|
||||
<% } else { // keyword property -- ignore
|
||||
if (p instanceof KeywordProperty) {%>
|
||||
<p>Not expecting keyword properties here.</p>
|
||||
<% } else {
|
||||
log.warn("unexpected unknown property type found");%>
|
||||
<p>Unknown property type found</p>
|
||||
<% }
|
||||
}
|
||||
|
||||
%><c:set var="counter" value="${counter+1}"/><%
|
||||
|
||||
} // end for (Property p : g.getPropertyList()
|
||||
%>
|
||||
</div><!-- propsWrap -->
|
||||
</div><!-- class="propsCategory" -->
|
||||
<c:if test="${showSelfEdits || showCuratorEdits}">
|
||||
<a class="backToTop" href="#wrap" title="jump to top of the page">back to top</a>
|
||||
</c:if>
|
||||
<% } // end for (PropertyGroup g : groupsList)
|
||||
} else {
|
||||
log.debug("incoming groups list with merged properties not found as request attribute for subject "+subject.getName()+"\n");
|
||||
}
|
||||
%>
|
650
themes/vivo-basic/css/individual.css
Normal file
|
@ -0,0 +1,650 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
/*************************************************
|
||||
vivo-basic theme: TEMPORARY individual styles
|
||||
**************************************************/
|
||||
|
||||
/*@import url("thickbox.css");*/
|
||||
|
||||
#personWrap #vitroPropertyGroupname {
|
||||
/* display: none;*/
|
||||
}
|
||||
|
||||
#personWrap #content.person {
|
||||
padding: 30px 0 20px 4px;
|
||||
/* width: 69%;*/
|
||||
width: auto;
|
||||
/* min-width: 600px;*/
|
||||
/* margin-right: 280px;*/
|
||||
/* padding-top: 10px;*/
|
||||
}
|
||||
|
||||
#personWrap #contentwrap {
|
||||
/* background: #fff url(../site_icons/grouping/bg_page_person.gif) no-repeat right top;*/
|
||||
}
|
||||
|
||||
#personWrap {
|
||||
/* background: url(../site_icons/grouping/bg_innerwrap_person.gif) repeat-y right top;*/
|
||||
padding-top: 20px;
|
||||
/* margin-top: 25px;*/
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#personWrap .entity {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
/* ------ duplicate styles for department pages ----- */
|
||||
|
||||
#deptWrap div.admin {
|
||||
/* display: none;*/
|
||||
}
|
||||
|
||||
#deptWrap #content {
|
||||
/* padding: 0 0 20px 4px;*/
|
||||
padding-top: 0;
|
||||
/* width: 69%;*/
|
||||
width: auto;
|
||||
min-width: 600px;
|
||||
margin-right: 280px;
|
||||
}
|
||||
|
||||
#deptWrap {
|
||||
background: url(../site_icons/grouping/bg_innerwrap_person.gif) repeat-y right top;
|
||||
padding-top: 26px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#deptWrap #dashboard {
|
||||
padding: 0 0 100px 0;
|
||||
display: inline-block; /* fixes IE double top-padding bug, discussed at: http://exscale.se/archives/2007/06/13/ie-double-padding-bug/ */
|
||||
background: none;
|
||||
text-align: left;
|
||||
width: 255px;
|
||||
}
|
||||
|
||||
#deptWrap em.moniker {
|
||||
color: #888888;
|
||||
}
|
||||
|
||||
#deptWrap div.description {
|
||||
/* font-size: 1.2em;*/
|
||||
}
|
||||
|
||||
#deptWrap div.description p,
|
||||
#deptWrap div.description li {
|
||||
/* font-size: 1em;*/
|
||||
}
|
||||
|
||||
img.screenshot {
|
||||
display: block;
|
||||
margin: 4px 0;
|
||||
border: 3px solid #C7C3BB;
|
||||
}
|
||||
|
||||
#deptWrap #dashboard a:link {
|
||||
/* color: #55AABB;*/
|
||||
/* border-color: #55AABB;*/
|
||||
}
|
||||
|
||||
#deptWrap ul.externalLinks {
|
||||
padding-left: 21px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
#deptWrap ul.externalLinks li {
|
||||
display: block;
|
||||
margin-bottom: 21px;
|
||||
padding-left: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------- */
|
||||
|
||||
#personWrap #entity {
|
||||
clear: left;
|
||||
margin: 0;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#personWrap #entity h2,
|
||||
#personWrap #entity em.moniker {
|
||||
float: none;
|
||||
/* display: inline;*/
|
||||
display: block;
|
||||
}
|
||||
|
||||
#personWrap #entity h2 {
|
||||
/* padding-right: 16px;*/
|
||||
/* line-height: 2.5em;*/
|
||||
line-height: 1.3em;
|
||||
margin: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#personWrap em.moniker {
|
||||
clear: none;
|
||||
display: inline-block;
|
||||
padding: 2px 0 0 0;
|
||||
}
|
||||
|
||||
#personWrap div#profileImage {
|
||||
width: 87px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#personWrap img.headshot,
|
||||
#personWrap a.img img.headshot {
|
||||
width: 75px;
|
||||
float: left;
|
||||
margin: 0 12px 3px 0;
|
||||
/* border: 1px solid #333333;*/
|
||||
border: 1px solid #777;
|
||||
}
|
||||
|
||||
#personWrap #entity div.citation {
|
||||
clear: left;
|
||||
display: inline;
|
||||
font-size: .8em;
|
||||
line-height: 1.2em;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
#personWrap div#overview {
|
||||
position: relative;
|
||||
clear: left;
|
||||
margin: 0;
|
||||
padding-top: 6px;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
#personWrap div#overview.loggedIn {
|
||||
/* padding-right: 4em;*/
|
||||
}
|
||||
|
||||
#personWrap ol,
|
||||
#personWrap ul {
|
||||
padding-left: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#personWrap #content ol li,
|
||||
#personWrap #content ul li {
|
||||
padding-left: 0;
|
||||
/* font-size: 1em;*/
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory h3 {
|
||||
float: left;
|
||||
display: inline;
|
||||
height: 24px;
|
||||
margin: 0 0 0 -1px;
|
||||
padding: 0 0 0 12px;
|
||||
font-size: 1.08em;
|
||||
color: #fff;
|
||||
background: url(../site_icons/grouping/h3_tab_left.gif) left top no-repeat;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory h3 strong {
|
||||
float: left;
|
||||
display: inline;
|
||||
height: 19px;
|
||||
padding: 5px 16px 0 0;
|
||||
background: url(../site_icons/grouping/h3_tab_right.gif) right top no-repeat;
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory {
|
||||
clear: left;
|
||||
background: #fff url(../site_icons/grouping/bg_propsCategory.gif) right top no-repeat;
|
||||
/* border-left: 1px solid #d9d9d9;*/
|
||||
border-left: 1px solid #dedede;
|
||||
/* border-bottom: 1px solid #d9d9d9;*/
|
||||
border-bottom: 1px solid #dedede;
|
||||
/* margin-bottom: 30px;*/
|
||||
margin: 25px 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsWrap {
|
||||
clear: left;
|
||||
margin: 0;
|
||||
padding: 8px 16px;
|
||||
/* background: url(../site_icons/grouping/bg_propsWrap.gif) right top no-repeat;*/
|
||||
/* border-top: 1px solid transparent;*/
|
||||
/* border-right: 1px solid transparent;*/
|
||||
/* background: #f7f7f7;*/
|
||||
}
|
||||
|
||||
#personWrap div.propsItem {
|
||||
position: relative;
|
||||
background: none;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 14px 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory div.propsItem { /* being more specific here to leave borders off ungrouped (single) properties */
|
||||
padding-bottom: 3em;
|
||||
/* border-top: 1px solid #fff;*/
|
||||
/* border-bottom: 1px solid #f0ede4;*/
|
||||
border-bottom: 1px solid #f2f2f2;
|
||||
/* background: #faf8f3;*/
|
||||
}
|
||||
|
||||
/* temporary patch - can't reliably apply class of first to some properties */
|
||||
|
||||
#personWrap div.propsCategory div.propsItem.first,
|
||||
#personWrap div.propsCategory div.propsItem:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory div.propsItem.last,
|
||||
#personWrap div.propsCategory div.propsItem:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory div.propsItem:first-child { /* temporary patch - can't apply class of first to initial property under affiliations group */
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory div.propsItem:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsItem h4 {
|
||||
margin-bottom: 1.25em;
|
||||
margin-left: -16px;
|
||||
}
|
||||
|
||||
#personWrap ul.properties {
|
||||
/* font-size: 1.2em;*/
|
||||
padding-left: 0;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties {
|
||||
/* font-size: 1.2em;*/
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties p, /* resetting font sizes for html inside data props */
|
||||
#personWrap div.datatypeProperties ul {
|
||||
/* font-size: 1em;*/
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties ul {
|
||||
margin: 0;
|
||||
padding: 0 0 .5em 1.5em;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties ol {
|
||||
list-style-type: decimal;
|
||||
margin: 0;
|
||||
padding: 0 0 .5em 2em;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties ul li {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties ul.datatypePropertyValue {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
/* multi-item data properties should not have initial bullets */
|
||||
#personWrap div.datatypeProperties ul.datatypePropertyValue li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties ul.datatypePropertyValue ul li {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties ul.datatypePropertyValue ol li {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
|
||||
|
||||
#personWrap div.datatypeProperties ul ol,
|
||||
#personWrap div.datatypeProperties ul ul {
|
||||
margin-left: 1.5em;
|
||||
list-style-position: inside; /* resetting from vivo.css */
|
||||
}
|
||||
|
||||
|
||||
/* ----------------- Dashboard ---------------- */
|
||||
|
||||
#personWrap #dashboard {
|
||||
padding: 32px 0 100px 0;
|
||||
display: inline-block; /* fixes IE double top-padding bug, discussed at: http://exscale.se/archives/2007/06/13/ie-double-padding-bug/ */
|
||||
background: none;
|
||||
text-align: left;
|
||||
width: 256px;
|
||||
}
|
||||
|
||||
#personWrap #dashboard li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
#personWrap #dashboard a {
|
||||
/* color: #B31B1B;*/
|
||||
}
|
||||
|
||||
#personWrap #propGroupNav {
|
||||
margin-bottom: 20px;
|
||||
border: 2px solid #F0EEE4;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
#personWrap #propGroupNav li {
|
||||
padding: 0 0 1px 0;
|
||||
}
|
||||
|
||||
#personWrap #propGroupNav h2 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 1.08em;
|
||||
text-align: left;
|
||||
text-transform: uppercase;
|
||||
/* background: #6d8e80;*/
|
||||
}
|
||||
|
||||
#personWrap #dashboard #propGroupNav h2 a {
|
||||
display: block;
|
||||
padding: 5px 14px 5px 14px;
|
||||
border: 0;
|
||||
color: #fff;
|
||||
/* background: #6d8e80;*/
|
||||
background: #baa280 url(../site_icons/grouping/bg_propGroupNav-active.gif) top right repeat-y;
|
||||
}
|
||||
|
||||
#personWrap #dashboard #propGroupNav h2 a.inactive {
|
||||
color: #b4bfba;
|
||||
background: #baa280 url(../site_icons/grouping/bg_propGroupNav-inactive.gif) top right repeat-y;
|
||||
}
|
||||
|
||||
#personWrap #dashboard #propGroupNav h2 a:hover {
|
||||
color: #fff;
|
||||
background: #b31b1b;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
#personWrap #dashboard #propGroupNav h2 a#currentCat {
|
||||
background: #b3a37c;
|
||||
}
|
||||
|
||||
#personWrap #dashboard strong.contactLink {
|
||||
padding-left: 22px;
|
||||
margin-left: 14px;
|
||||
margin-bottom: 2em;
|
||||
margin-top: 2em;
|
||||
background: url(../site_icons/contactinfo.gif) left center no-repeat;
|
||||
font-weight: bold;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#personWrap #dashboardExtras {
|
||||
position: relative;
|
||||
height: 1%;
|
||||
margin: 10px 14px;
|
||||
/* padding: 10px;*/
|
||||
/* border: 1px solid #CBCBCB;*/
|
||||
/* background: #e6e6e6;*/
|
||||
}
|
||||
|
||||
#personWrap #dashboardExtras h3 {
|
||||
display: inline;
|
||||
font-size: 1em;
|
||||
line-height: 1.5em;
|
||||
margin: 0 0 .5em 0;
|
||||
}
|
||||
|
||||
#personWrap #dashboardExtras a img {
|
||||
/* border: 1px solid #ccc;*/
|
||||
/* display: block;*/
|
||||
/* width: auto;*/
|
||||
/* margin: 4px 0 0 0;*/
|
||||
/* text-decoration: none;*/
|
||||
}
|
||||
|
||||
#personWrap ul.profileLinks {
|
||||
margin-left: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#personWrap ul.profileLinks li {
|
||||
padding-left: 0;
|
||||
margin-bottom: 10px;
|
||||
background: none;
|
||||
}
|
||||
|
||||
ul.keywords li {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#personWrap #links,
|
||||
#personWrap #keywords {
|
||||
/* position: relative;*/
|
||||
clear: both;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#personWrap #links {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
/* ----------------- Editing Controls ---------------- */
|
||||
|
||||
#personWrap #dashboard #dashboardExtras a.add,
|
||||
#personWrap #dashboard #dashboardExtras a.edit,
|
||||
#personWrap #dashboard #dashboardExtras a.delete { /* being overly specific because IE6 had difficulties */
|
||||
color: #209ae0;
|
||||
}
|
||||
|
||||
#personWrap #dashboardExtras a.add {
|
||||
position: absolute;
|
||||
/* top: 0;*/
|
||||
right: 8px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#personWrap #content a.delete {
|
||||
/* display: none;*/
|
||||
}
|
||||
|
||||
#personWrap #overview a.delete {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#personWrap #overview a.edit {
|
||||
padding-left: 5px;
|
||||
/* position: absolute;*/
|
||||
/* top: 0;*/
|
||||
/* right: 16px;*/
|
||||
}
|
||||
|
||||
#personWrap a.add, #personWrap a.edit, #personWrap a.delete {
|
||||
color: #209ae0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#personWrap a.add:hover, #personWrap a.edit:hover, #personWrap a.delete:hover,
|
||||
#personWrap a.add:active, #personWrap a.edit:active, #personWrap a.delete:active {
|
||||
color: #FF8811;
|
||||
}
|
||||
|
||||
/*#personWrap div.propsCategory a.add,
|
||||
#personWrap div.propsCategory a.edit {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory div.highlighted a.add,
|
||||
#personWrap div.propsCategory div.highlighted a.edit {
|
||||
right: 15px;
|
||||
}*/
|
||||
|
||||
#personWrap div.dataItem a.delete {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#personWrap div.datatypeProperties a.delete {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#personWrap #content .properties a.edit,
|
||||
#personWrap #content .properties a.delete,
|
||||
#personWrap #content .datatypeProperties a.edit,
|
||||
#personWrap #content .datatypeProperties a.delete {
|
||||
position: static; /* reset for edit links for property statements */
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
div.editBox.editMode {
|
||||
border: 2px solid #b5d6e8;
|
||||
background: #FFFEDB;
|
||||
/* padding: 12px 10px;*/
|
||||
padding: 12px 10px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
|
||||
#personWrap div.datatypeProperties div.editMode ol li,
|
||||
#personWrap div.datatypeProperties div.editMode ul li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
div.editBox.editMode.editing {
|
||||
background: #F4F8FE;
|
||||
}
|
||||
|
||||
|
||||
#personWrap div.editing ul.properties,
|
||||
#personWrap div.editing div.datatypeProperties {
|
||||
color: #888;
|
||||
/* display: none;*/
|
||||
}
|
||||
|
||||
div.button {
|
||||
padding: 16px 0 0 0;
|
||||
}
|
||||
|
||||
div.editBox button {
|
||||
color: #209ae0;
|
||||
padding: 3px 6px 3px 6px;
|
||||
}
|
||||
|
||||
a.addNewButton {
|
||||
/* color: #209ae0;
|
||||
border: 1px solid #5394c3;
|
||||
padding: 6px 16px;
|
||||
line-height: 3em;
|
||||
background: url(../site_icons/grouping/bg_links_addnew.gif) center center repeat-x;*/
|
||||
}
|
||||
|
||||
a.addNewButton button {
|
||||
color: #209AE0;
|
||||
}
|
||||
|
||||
#personWrap a.cancel {
|
||||
color: red;
|
||||
border-color: #E7B6B9;
|
||||
}
|
||||
|
||||
#personWrap .editForm input#submit {
|
||||
color: #209AE0;
|
||||
}
|
||||
|
||||
#personWrap div.editBox .editForm {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
#personWrap table.mceEditor,
|
||||
#personWrap div.editBox textarea {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
#personWrap p.propEntryHelpText {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
margin: 0;
|
||||
padding: 5px 0;
|
||||
line-height: 1.2em;
|
||||
color: #439CBD;
|
||||
}
|
||||
|
||||
#personWrap #keywords div.editBox a.edit {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a.backToTop {
|
||||
float: right;
|
||||
margin-top: -22px;
|
||||
font-size: .9em;
|
||||
color: #aaa;
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
a.backToTop:link,
|
||||
a.backToTop:visited {
|
||||
/* color: #118855; */
|
||||
}
|
||||
|
||||
#personWrap div.propsCategory div.highlighted {
|
||||
/* background: #faf8f3 url(../site_icons/grouping/bg_propsItem_highlighted.gif) left top repeat-y;*/
|
||||
border-top-color: #faf8f3;
|
||||
/* border-top-color: #F0EDE4;*/
|
||||
border-bottom-color: #faf8f3;
|
||||
/* border-top: 1px solid #F0EDE4;*/
|
||||
margin-left: -16px;
|
||||
padding-left: 16px;
|
||||
margin-right: -15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
/* ----------------- Colors ----------------
|
||||
|
||||
Light Blue (edit links): #209ae0
|
||||
Bright Orange (link hover): #FF8811
|
||||
Dark Green (links): #118855
|
||||
*/
|
||||
|
||||
/* fixes IE double top-padding bug, discussed at: http://exscale.se/archives/2007/06/13/ie-double-padding-bug/
|
||||
-- recent versions of Firefox and Safari don't ignore inline-block anymore */
|
||||
|
||||
* html #personWrap div.propsWrap {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
*:first-child+html #personWrap div.propsWrap {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
* html div.editBox button {
|
||||
padding: 1px 3px 2px 3px;
|
||||
}
|
||||
|
||||
*:first-child+html div.editBox button {
|
||||
padding: 1px 3px 2px 3px;}
|
||||
}
|
||||
|
||||
* html #personWrap #entity h2,
|
||||
* html #personWrap #entity em.moniker {
|
||||
height: 1%; /* fixes IE6 peekaboo bug */
|
||||
}
|
||||
|
||||
* html #personWrap #dashboardExtras,
|
||||
* html #personWrap div.propsCategory,
|
||||
* html #personWrap div.propsItem {
|
||||
height: 1%; /* fixes IE6 peekaboo and absolute position bug described at http://www.positioniseverything.net/abs_relbugs.html */
|
||||
}
|
||||
|
||||
* html #personWrap div.admin {
|
||||
height: 1%;
|
||||
}
|
||||
* html #personWrap #content div.propsItem {
|
||||
border-color: #f0ede4;
|
||||
border-top: 0;
|
||||
}
|
|
@ -266,7 +266,8 @@ a.externalLink { color: #84a655; }
|
|||
|
||||
div.description { margin-bottom: 1.5em; }
|
||||
|
||||
.propertyName {
|
||||
.propertyName,
|
||||
.propsItem h4 {
|
||||
font-size: 1em;
|
||||
line-height: 1em;
|
||||
color: #666;
|
||||
|
|
BIN
themes/vivo-basic/site_icons/grouping/bg_propGroupNav-active.gif
Normal file
After Width: | Height: | Size: 278 B |
After Width: | Height: | Size: 288 B |
BIN
themes/vivo-basic/site_icons/grouping/bg_propsCategory.gif
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
themes/vivo-basic/site_icons/grouping/bg_propsWrap.gif
Normal file
After Width: | Height: | Size: 70 B |
BIN
themes/vivo-basic/site_icons/grouping/h3_tab_left-active.gif
Normal file
After Width: | Height: | Size: 589 B |
BIN
themes/vivo-basic/site_icons/grouping/h3_tab_left.gif
Normal file
After Width: | Height: | Size: 433 B |
BIN
themes/vivo-basic/site_icons/grouping/h3_tab_right-active.gif
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
themes/vivo-basic/site_icons/grouping/h3_tab_right.gif
Normal file
After Width: | Height: | Size: 710 B |