From 84b458402e49911231bef06ccbdd888fbad25d25 Mon Sep 17 00:00:00 2001 From: nac26 Date: Fri, 16 Jul 2010 12:48:12 +0000 Subject: [PATCH] viva la property groups! NIHVIVO-398 --- productMods/templates/entity/entityBasic.jsp | 317 +++++++++ .../entity/entityMergedPropsList.jsp | 306 +++++++++ themes/vivo-basic/css/individual.css | 650 ++++++++++++++++++ themes/vivo-basic/css/screen.css | 3 +- .../grouping/bg_propGroupNav-active.gif | Bin 0 -> 278 bytes .../grouping/bg_propGroupNav-inactive.gif | Bin 0 -> 288 bytes .../site_icons/grouping/bg_propsCategory.gif | Bin 0 -> 11069 bytes .../site_icons/grouping/bg_propsWrap.gif | Bin 0 -> 70 bytes .../grouping/h3_tab_left-active.gif | Bin 0 -> 589 bytes .../site_icons/grouping/h3_tab_left.gif | Bin 0 -> 433 bytes .../grouping/h3_tab_right-active.gif | Bin 0 -> 1360 bytes .../site_icons/grouping/h3_tab_right.gif | Bin 0 -> 710 bytes 12 files changed, 1275 insertions(+), 1 deletion(-) create mode 100644 productMods/templates/entity/entityBasic.jsp create mode 100644 productMods/templates/entity/entityMergedPropsList.jsp create mode 100644 themes/vivo-basic/css/individual.css create mode 100644 themes/vivo-basic/site_icons/grouping/bg_propGroupNav-active.gif create mode 100644 themes/vivo-basic/site_icons/grouping/bg_propGroupNav-inactive.gif create mode 100644 themes/vivo-basic/site_icons/grouping/bg_propsCategory.gif create mode 100644 themes/vivo-basic/site_icons/grouping/bg_propsWrap.gif create mode 100644 themes/vivo-basic/site_icons/grouping/h3_tab_left-active.gif create mode 100644 themes/vivo-basic/site_icons/grouping/h3_tab_left.gif create mode 100644 themes/vivo-basic/site_icons/grouping/h3_tab_right-active.gif create mode 100644 themes/vivo-basic/site_icons/grouping/h3_tab_right.gif diff --git a/productMods/templates/entity/entityBasic.jsp b/productMods/templates/entity/entityBasic.jsp new file mode 100644 index 00000000..dcaa3a92 --- /dev/null +++ b/productMods/templates/entity/entityBasic.jsp @@ -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"); +%> + + + + + + + + <% + try { + VitroRequest vreq = new VitroRequest(request); + entity = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI((String)request.getAttribute("myEntityURI")); + } catch (Exception e) { + e.printStackTrace(); + } + %> + + +<% + +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); +}%> + + + + + + + + +<% + //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); +%> + +<%/* just moving this into page scope for easy use */ %> + + + + + + + +
+
+ + +
+ +
+ + +

${relatingPredicate.domainPublic} for ${relatedSubject.name}

+ + + + +

← return to ${relatedSubject.name}

+
+ + + <%-- Label --%> +
+
+

${entity.name}

+ + + ${editLinks} + +
+
+ + <%-- Moniker--%> + +
+
+
+ ${entity.moniker} +
+
+
+
+ +
+
+
+ + + + + + <%-- Thumbnail --%> + + + + + + +
+

image

+ ${imageLinks} +
+
+
+ +
+
+
+
+ + + ${imageLinks} + +
+
+
+
+
+ <%-- hasImage --%> +
+
+
+
+ + + + + ${imageLinks} + +
+
+
+
+ +
+
+ + <%-- Links --%> + + + + + <%-- Description --%> + + + + + + + + +
+

description

${editLinksForNewDesc} + + + +
+
+
+
${entity.description}
+ + ${editLinksForExisitngDesc} + +
+
+
+
+ +
+
+
+ + + <%-- Ontology properties --%> + + + + <%-- unless a value is provided, properties not assigned to a group will not have a tab or appear on the page --%> + + + + <%-- Blurb --%> + +
+
+
+
${entity.blurb}
+
+
+
+
+ + <%-- Citation, if no thumbnail --%> + + + + + <%-- Keywords --%> + +

Keywords: ${entity.keywordString}

+
+ + ${requestScope.servletButtons} + + +
+
+
+ + + + diff --git a/productMods/templates/entity/entityMergedPropsList.jsp b/productMods/templates/entity/entityMergedPropsList.jsp new file mode 100644 index 00000000..d99123e4 --- /dev/null +++ b/productMods/templates/entity/entityMergedPropsList.jsp @@ -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" %> + +<%! +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");%> + +<% } + if (loginHandler!=null && loginHandler.getLoginStatus()=="authenticated" && Integer.parseInt(loginHandler.getLoginRole())>=loginHandler.getNonEditor()) { + log.debug("setting showCuratorEdits true");%> + + +<% } + 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"); + }%> + <%-- just moving this into page scope for easy use --%> + <%-- likewise --%> + +<% 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 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()); + } + %><% + return; + }%> + + <%-- +
    +<% for (PropertyGroup pg : groupsList ) { + if (openingGroupLocalName == null || openingGroupLocalName.equals("")) { + openingGroupLocalName = pg.getLocalName(); + } + String styleStr = "display: inline;"; + if (openingGroupLocalName.equals(pg.getLocalName())) {%> +
  • <%=pg.getName()%>
  • +<% } else { %> +
  • <%=pg.getName()%>
  • +<% } + } %> +
+ --%> + + +<% // now display the properties themselves, by group + for (PropertyGroup g : groupsList) {%> + + + + + + <%-- Getting the count of properties in each group --%> + + + <% int propTotal = g.getPropertyList().size(); %> + + + +
+

<%=g.getName()%>

+
+<% for (Property p : g.getPropertyList()) {%> +<% if (p instanceof ObjectProperty) { + ObjectProperty op = (ObjectProperty)p;%> + + + + + + + + + + + <%-- 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. --%> + + + + + + +
+

${objProp.editLabel}

+ + + + + <% /* arbitrary limit if value is unset, i.e. -1 */ %> + + + +
    + + +
  • + + + + + <%-- +<% ObjectPropertyStatement oStmt = (ObjectPropertyStatement)request.getAttribute("opStmt"); + if (oStmt!=null) { + Individual obj= (Individual)oStmt.getObject(); + if (obj != null) { + if (!obj.doesFlag1Match(currentPortalId)) {%> + +<% } + } + }%> + --%> + + + + + + + + + + + + + + + + + + + + + + + + ${editLinks} + (non-editable) + +
  • +
    +
+
+
+<% } else if (p instanceof DataProperty) { + DataProperty dp = (DataProperty)p;%> + + + + + + + + + + + +
+

${dataProp.editLabel}

+ + + + <%-- just put in a single "edit" link, not an "add" link that expands to reveal edit/delete links --%> + + ${editLinks} + (non-editable) + + <%-- creates an add link, even if displayLimit is unset, i.e. -1 --%> + + + + + + <%-- set to an arbitrary but high positive limit if unset on property, i.e. -1 --%> + + + + <%-- don't leave just one statement to expand --%> + + + <%-- c:if test="${displayLimit < 0}"> + +
+
    +
    + + + + + + ${dataPropertyStmt.data} + + + ${editLinks} + (non-editable) + + + + +
  • + ${dataPropertyStmt.data} + + + + ${editLinks} + (non-editable) + + +
  • +
    +
    +
    +
    + +
    +
+ +
+
+
+ +<% } else { // keyword property -- ignore + if (p instanceof KeywordProperty) {%> +

Not expecting keyword properties here.

+<% } else { + log.warn("unexpected unknown property type found");%> +

Unknown property type found

+<% } + } + + %><% + + } // end for (Property p : g.getPropertyList() + %> +
+
+ + back to top + +<% } // end for (PropertyGroup g : groupsList) + } else { + log.debug("incoming groups list with merged properties not found as request attribute for subject "+subject.getName()+"\n"); + } +%> \ No newline at end of file diff --git a/themes/vivo-basic/css/individual.css b/themes/vivo-basic/css/individual.css new file mode 100644 index 00000000..ab193000 --- /dev/null +++ b/themes/vivo-basic/css/individual.css @@ -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; +} \ No newline at end of file diff --git a/themes/vivo-basic/css/screen.css b/themes/vivo-basic/css/screen.css index da1249e4..d1b99c91 100644 --- a/themes/vivo-basic/css/screen.css +++ b/themes/vivo-basic/css/screen.css @@ -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; diff --git a/themes/vivo-basic/site_icons/grouping/bg_propGroupNav-active.gif b/themes/vivo-basic/site_icons/grouping/bg_propGroupNav-active.gif new file mode 100644 index 0000000000000000000000000000000000000000..de430db339e3b700ab381f7cc7947d7090fe8d74 GIT binary patch literal 278 zcmZ?wbhEHbWME`wIKsft)YRDC-rCsMSXWn9TU*=I)Kp(z-_X#|($Z30U0qXC)7;!# zRaMp6+FDsz+1A!pQBl#}-p)WYQ2faPR;vRhfp#*mPEJtiOUayz;7%t~^V zE9U9f+!sHf5a6K0#dkvG(t#W!_6si>9M%Sj-pDaK__j>)!G;@-db3YX*iv;iZ}CT%F%gQPf;h z&{$Q}Qd87iUC>Zj*i@ZcTUOj!n_pj%S65!rR>y!BDE?#t%j9wT+#VqpO>zySJZjU{FYSL{wZ{Vp967 zwA{Jb1%;Vqi%V*kEnl(H(70)Bi=BPDb0>FqPhbCpkkH9IQPI=l6O(7po_Bmf(UQfA G4AubikZLUe literal 0 HcmV?d00001 diff --git a/themes/vivo-basic/site_icons/grouping/bg_propsCategory.gif b/themes/vivo-basic/site_icons/grouping/bg_propsCategory.gif new file mode 100644 index 0000000000000000000000000000000000000000..defbc255ab43e2d65b2a6a047593db7c75569031 GIT binary patch literal 11069 zcmV-DE5g)ANk%w1VL%4Z2gDcv|NsB~{{G(H-r(Ti=jP?x*wowG+u`Bh{{HvY*45+U z;^E=p>FDO(-Q4!`?%CPd{QB_T-P+*a-`LmJ-QC^({`&j(?cw0y000000000000000 z000000000000000A^8LW000;OEC2ui06+%N2LJ{CASRAvX`X1Ru59bRa4gSsZQppV z?|kq7z@TtQEE41ejE#(BTJr4xw7TUm@{kM z%(=7Y&!9t#9!C>oFs~#Nyfdv8-1ejP&ySDAyxO3~?&AYen-@to9p6p&C(y}I@5*t2Wj&b_<$@8H9WA5WgI^YhFJ7#LB$z5Dm@5f($muT7Uf=5TJt;R%qdc7-p#9h8%Y2pNG7S| zl1wfbWPcST(Bza0+o_zM{=U{a@C%~VC7Ha6Bh$dQOpv?`c=%bKED(R$@;>Rd+j#jGarkr-_ z>8G|`8bGF?mTKy$sHUo_d6$y9>Z`EED(kFxis~w@xaO+suDtRn>ZrX2E9|hu7R%tT zz#6OUvdlK?Y<9>d`|PyTR%`A5wVp+L-mTbn>+QGTeyeSW+=grJx#*?~>$qK(tM0q- z#w)L%>@w=^y!hs;@4i&l`|G{@1}yNv1fS@ywg4Bb@WKo?Z0W)5ChYLU6jy99oe=vg z@x>f>?D5B?Wi0Z>AeU_N$tWWx^2*Yt?DESn$9xydG?Ogz%{b?*FU>r+tn<%62d!?; zMB6O%(MTt)E745*tn|}RNBwHkR2wbz)mUduFV$6R?e*7S^U3wtPKRyw*=S!$_S#mb z?e^PntGM>uZO3i*-FP26H{E&n?f2h$@4a{3fERA~;m``MIN^vl?)c-pDK0stkXLT` z<-kooIpdgj?)m4BX)Zed=b)Ev`su8St~u$bx9)o9s>jay>$KNic+k>n)#6|M?gzjE8Zc4<8X*Krh{6`S5KSs1;R|O-Lo3B_ zg*D8f4vlm}3$k#BKn!Ajdf34q3h{_YbPo}Wn8YSJ@j^>v;uEJxMFT}~ghs5Q7Psh| zD`Jt0U<_kx2+bwVa+=t*T{WYb&2BPqo80uKIQ0ikYmW1r{wt?B(aBEvsWY7IjOX>< zxlVc7bDs2s=RNl+ynO1Dp8$QGKkFILg3@lF1U0BaO^48gF7%<8Yp6pZO3}wj^q&>Y zXx}b6QH^^46mJ~u=toETwvb|!q$u^8Nky8{mSSzCEOn_&p9a&D&h(~0tEo+K%F~$X zG^RZb>dSt*Q=uC5V?-_LQI}e=q$-uEP+gc)pBmMw3T&#qw5nDehSjWY^{WHxDpkQs z)^Le+tYu9rw$AERwYn8uY;EgX=jyGv%9XBorIuaqn%BNAYp;Cut6+x(*h>!fu*NE^ zVG+yNUMY65jg2g=9t&B?T6R^Gt?XqtYpTpflCz-gtY_sI+R}Pzw4^nyYAJ=<)UNim zifXNEVM|*=$#%B2&8?npi(B3LHcq_7<8O!irr-*fxX3M&agUqa=5lbkK6I{hp9@_a zPWQV1Hmq)RvCCa1X;+Hf4eyb@yIt{`w@2hH?|IjYqx4#rz3_dJd*2)1`le{U^tG>k zJA~i-?)SeK>aPp|OkgMq*nm_{8KX@c>cG;_#?=#Vw98cU~Mp8Qa)8G_LWDcMQiIzmLa2Hja;f9ONPg zXUOO?vXXm)9Y91Oy-K$|8Ysq=uGOeZo$B$my2h{$U#-_`>RgAa*CQ78^NyYDWmopu5teqfuN_%nZ+lPQ z&UU$Dm+sMuyWMY!cew9;x_$Ti-<=!ye+{1Sg>Tj2o11vWFP^xKcl_hu9r-}%eexcy zyyY=ZdCj+r^SCvnrLXPjKcD)3uRchmZ@ocZ4}00KmiD!`y=ieTquA?y zpS&m6?-d^W{`h|Q@hm=sj*onHD&P3cpZN2)75&RjpZe98?DYke{m5>g``u^k_Zt;{ z@sGc3<;Uy!(VzaguAlksZ|3^hAOEAjzy5ulKm74OO#Sm;{rC5O?iYan0_ax$SAc3Y zfAoidQKf+U$AGTnfDl+#5;%ciRe=_`RT!9oR<(f~D0UwBflH-;3n+p(MS>4#f|P`U zDhPrH*n&sJf-o3^Avl94Sc5h=Q!L-i?XOn zv{;L!bc?tMO1ij9m9i_$oavsjJR zXp7jGjk&mu+{laG_>I39j^ZecT|#kMj6}^azgjc#q?l zkNRki{Me7__>Ta|jsiK5?>LVJS%e6gkbAU{44Fp``H+cJkP@ko1Xz&=d65`-ND;Y_ zY1EM(iAEF|k`sA;Z%C5fGm#|HrUynDD<7+X+q*Tp47CR=1HFDnVuh1 zo$N_L?)jb)6rb|hK=fIkwp5<@X`lMJpZU3-{>h*J02-hMRGb9*p96ZJ|6`yE3P23n zpy_m<5E?%ZI-&Sep%&^+5}KjqgP|O{J|6m^9lD_+nvx`1qSzCnDB3-~xuWFLqAvP9 zFdCyQs-iR+Ju`Zv){~<;ila8#qshagK&m`KI;6x?q(&;0Cz_c@;d8K4prdoQYo-?Lu%9v@|rkBH}aB4YnI;Wgz zrgloFc$%ko`lfu^ICc7`hZCrRI-7o4sD|2~h#FCQx~PeoppF`+jT)(bL#ULxoRfN~ z#CfQiim8g)sesC7PCu)3|> zI;-CLt+pDj;+m_g$DQSxSmc_n!g_k>%C7WtuJEd=?mDmCTCesBuK1d-YObR9 zuK&6#@;b0zQ?LfhtNxm>#j~&s8#M^~unp^Z0xPky;;{G|vM^hDA1kvJ*G9^2>w`?=tPt)iPQq+7b68@i~wR;s(Y z?bEuht5>iayU%jEw9C4)d%J&SySf`dyxY6eQmw$7E5bXxll8mC%Phs4ys@&p%sVy6 z`@HcQz0xZzy;{Bd*7Fi$M6Bzp+)n{Oi8|{`4DVAEm_q)FcY+D4p!2PSh4%{aP9Kiq# z!4$k(4Sc~Ol))POCllPk`fI@;3|t&M!h7<;CY&fJoWh5)!YsVOBK*Q<;=(fgK@n#6(QOF?_^YV#G@9CQRJKZ1TiVY$j4X#bi>&Ry-y> zoW)zR#ax^vUi`&slf+`|U1VIwN)pCsJSA$p#%6rOZXCsD9LI|?$8_u?ZG6Y$WygA) zLVVoEIg-bK{3Cxn$Tw2Rh72Q!oX9S+$c)S)j{L}S1ILn#C6Qdo21Ci1TqT#h$seN0 zp3KJb8_NAM%B0*RpnS^zX>7`>yvm!~%393Iu#6!IUby_r zmK@B&oL!Gw%%!}`$UMx-yv)Yzw$9AV&>YQUJk8Y1$<2JtsGQB(yd=lm&3kOk;Ox!Z zJkGQ%&gPsX<($rS{I%>%$msmew>-7-EXwp;&u<)gHH*(j=Fa@=$NK!w+Z@mWP0j>e z(CU282tCh@x6cc`8~*&z@} zD6-Bf{mCia(k^Y%Fl}HjJ<}WV%{HAOIGxipEz>;RAUplj3l`Ku9XK^z)I-hENDb6P zz0?ra)J|O>z8uy6^)b~{Js(zm)$x(lTKyhe-PP^!)nJ`s#5~qgE!JiY9;uwxN`%&I z-5qQF)?{7Qay>+DUDt_2*LYpkalO~x(aC-tWqlpk+X2{wO&f-N*j9Geirr(3-PpyE z*pO`+l0DfEGT4@#9DWaT^X}|+hJzgx-A*G-P_sn+rZ5w!adxYfyKtX8pxg8d{o@bZ5hk`+?4Iy(mff` zUEPV4ef-QIup-thh1={?_j!QS?b z+wz^?fq~!u{O#NO{ojce-~ygH+FjslM&Jm(NeaH;Tvp!*?%xi+7!p3=de-0;Uf~w5 zG7ui&9bVuVp5Y%Z;2}QYCGOxSzTheD;Rn9q);;3?z2YDa?nRe&j!H5}f`i(cu6e$ki?-Iu=US3c674jGOf>Vz@s zq;Bc|nttk$(dnu_=Aho{klxU+&gQ8;>y2LPwjS$+=g`Sb>A8*$dBaieaukM|SeGmMnF8sp}?)8rR@vi*8&-~4=?9`s-&fo6x{`}J({boM>vrhcG zul?Ka{r3+3-EZyIzw6ll>Ck@u&z^X^e)!O@{=okJ@IUPGKmW#l{r3Oh>7W1q0}cX# zIFhA#qN%#Ft^2~UJkzx-0J*;Nz5fG)!XdF}JR+0IC9~;#LZi|twQ9X$v)V1U>-~bm z;xV~wKBLp>rmgLM!{hQfJ%(H3^ZGr%@Bae^3Jww$8Xh7hDlU@MIX*&0N=~-iFhALTwEhAI3){T*8XqGkD=#xQ zJ3m8%4Np^7PZvjLYj1ORdw+w6i?dmmo1Z^okFT@0yT8N7%g=A2+u!5g(C_p2`~L$B zC~#E1f(8$cP&aTP!-ftYLW~FzA;pU36iUpfaU;i$9zPPaD01X4j37_{qD-lBCCipf zNWzRc$)wAgHgDq0sq>x8o<8T$+$nS@(V|9=ditq!DUF~=pF)i)bt+XWOs`^H;j}8( zu3o=_6`FM{SrJ>qqD`xIEn9zO-(Ef2b}rqzcJKCrtM{i|yng=z4lJ0^-oi5b4o<9i zG2_Nl3_~7?*fHhGmM<%gteN6u%$`4k4qbIK>4Kd_qfV`QHOkVi@115Xdp7Ob`(ER| zXnQyB-oE4I4o)rh@8ZUfBM&KjdCBC?pF@uhiaB*w#HC};u6?_f>fTXZ=PrIc`SL)% zqmLBcJp1N2O^mN;93MS*pz|~LKtCS z4N?e$ff8bvp@u9~*dYrSZWyA7BR=GziLQ{CqKYfFcA|?UfXJeZGt!vNi#G-kV~soV z*kdj@zNn**LlRl!CqTL=q>)Q9*(6~|ny93cQ&L&w8Bj)PrIuTAX$Y1cO4+5DW0Gma zmmP*#rkZP(c_x}{!WpNWjnsefrCy#Yfc&DC!0!kvEb_QCgp<@oppr3~_+Nght z61b?NlTun9qytJ?sivDocjp!>>6UvBei-GO=qFW8AUFPinjw#~+hivK}FmHnPbpv)l;EnyK8f%rkfQ za%3^noU_hQ*nIQOKLgE4&ye99w9!ZRFtlMsBi*#oN*Bho(^KmV^xH$} zUz5x=Twa4+_QhhqMYh>%D~xtoYO@`8z;2TTx7>HrOZQlIU^O<%qC zL|)I?_TSgrJwn-oU%rguA4IkEp$Y3#$Ft^4oCU;pCs!)Cw!%Hp5@{{Q=`fA&xx z01Jp80iuI|23(+f5O@v+GBASVaiDG_Xu(ZUupAJ)AO|~@!D?)VYF2 zB_u~kq_K{AEXp0zvBy6KsE_jjBq0wdNIK-Pkcw={A%U{UN3y4p{DCAT$0Nx&B(jp4 z4A&*!kjYJgvP7LMP$)|YpHULSl&UliDpR@2SMsKnHTWbfYbg&|I>?r~Too?uu*+ZS zu$M2OB`}Nm4Pjcyn97tDGF?E-WkS;#%^YSls|m$vR>GRv1PnH_xy^6drJElDCpp_9 z&T*DAooG3yR@CWEW3e*@&wM96j}%W7)ia+^xhFpL=})5Yv!DMQXifrpf_V}&p@T4} z2@tB#hn|9=C2%N2D~bn+PSm0r{Rl??VYJbYZlt3L0Vzo%B2u%IG^GqVDN0r9Qh=~D zM=zaeKVnKzn&Q+6Hq9wddBW10_B5zOh^b74YE*9!6{tsD>JF01)TctjsZgEjGNek? ztLDY3Slucvh+0&xf^}h94J%nq;Z>!U)um@mD_cpi*0#dco;!^zT{Yp=uhuoMinuFU z^$JnG`ZchJ0IXmOD+t0GHn9;Mt703g2E;lxvR8tvWGgF%yW-Wdn)L!^`?^_jcJ{NP z-4vGvXGX7|fq%lh}fk`1tc^^4yE3zonLPOO3#T-XLXIIs|o zuwExj;ksJ*!g0;8hTF>F4yX0QASSDbM-0{yn|P}zPVrS&%;KrK_{C3+v5c2W;~E?F z#yAeDj(5z{9{U)lKn^lZ4@_hj3-`!eHL{YK%H$>=^~q2cs+6bP(<)mzr&!K%k(112 zCwuwJQ4X`1sZ8cFU-`^v*0P${Eacj{+01W^vyI_Q=O5eo&TpQxo_U<-KEJfhfF`M+ z2mR4P8+xOEPIO5Z&1jJSI{MLy=Ch>LO6f|cG}4&<>!mkM=-7Jt(4Y>rMmtUFQjhx7 zoSv(yA)V@0EA-W{CaA1u{m)w4TA#Sibv<{@YkIQ!*Q*vOdxibHU>iH3$WHb^m(6T{ zI{VqWK54O~J-nYtOD?{fP4-{1_mz_&^8f>(3h2)Cxf7aq-qJ6xIAj(EZ$PH|vP{Nl^Z zxWyV##d z_Oc@p(P%gO+1LIz34$tdi{<5^r$zz>ftx!*0b;R zus5IVXAi#G+kShv&wcfF&--Ji{`cSWz3`Do{Ni6b_{gW;@t2Rg<~#q~%8$PBr%(Ol zv;O+n|GW09pZ)GX-}>N}{`bcpJLsEVbLdY$<<`%B$GQLgiHpDdAt(O&Z;t->$D985 zFSq{tAKL)`U;vuU01_bB7~lbZ&HX9h{FPq=Iw1E!VEaAb1o{mFS|I;bU4AS7~z~BvzU=Hda3rbxN!XFO; zq1M>o5C%;V8sX0%VG>r25Hg|DIN=i_O%zJu)BIo+cHk9aAqZ;W7Ve9So?&) z%DCe@mP|a#KI#LX1BOB*qYAL0Zf~BIG~@$jfO|~RW;^eTr;!eV3O!}m>^kh)l5=&AlWdP}9Q^E>ULglSULsP{WnVhVUjpV{=H*}lieMUM3KeEz<_TglX6`KJWByKLN+z4^VPzhsV`65U zT;^srre=EPnsjDpP9|lNW|xfSX<8;|swSeCW@~B*Yr-a%$mVRu=4;xf65(cUTF-9s z=91LrZ#qeE3MZ2gXK@ca_ER)=!YVRhl*&3 zkZ6fUD1)Nte-7x1lBYhpD1WwSjCLrD(x`OW=#B1(it1<_&1jGMXpRDDey-z?zUVa? zX)_jSk_zZO?IV-A#E(KLgh=U>YG^rHDT^X$me%N&aw&)|>6cPyn2M<#VQHC~=$WEv zihAjqW(b+Ose-6!oSLbV(kYw9)05sQN6hJ-UMV~2sh@IEo(gK60&1aNsGTC}pPo~o zF6u-O>Z8hOq)O_DQfj3h$faT`fN1KbKFXnbY9N7XsB&tflB%eRlcS#hYCw$Ysv1%^ zsj92~gQ?2ut722E)@n_`YOdO9GvO+)(nG2O>wWC%u+~Sh8fydHYO)^dH2o^G!o#vc zYkNrRv__JzS}V0;Yqpw)vvTXT3e&TG>pE=fxLOi2iL1HVOSr1*1hH$oiU+#F>$&1m zy3Q+7^^(2bYd7TUzT!%~`s;S|Yrtv;z!GeB80^7fhb-xb)LO06K5f=& zZ6oz8*Gf#)f-N%v?bxCQ)|xG7pl#ZE#@ezi+0N|SwyoI8t$@&N-Ck4K;;m)4?cOp* z-}-H4+-=}m(cls;UI6al3Wnh-ZaC>};|gxvLT=t}?c`Ff*II7mR&M4_$m4Qu;Y#l3 z`UT^P?mBsH={j!cqAnMy?&{73>AEf(oo?*11?asZvh){ z{~~Y#1MnRQFauYC|3Yv<9nu3&@MA3S1@A-!Yw%ETa0hR227~ZTeDDZUumhX$wDge$ zr|?Uxa0}yv2*WUkyzmU$L=D?;l%jAB>#!WLFb~s~4+C)zpV1Ew@lXlz5wFA!D{)FN zaTB*l5ks-Iw2=`{@ed^N6@x?;Yq3XgaTj+)6@&2>OYskh=r*RITaT^cn z6|r#}zcCzV#2VW%pLWq4)A1hXu^vYeANO$}|8YpkaUmP>5()Ak8_^=C@gXB}9Pf}L zKe8f6vLx3KC0B9~X|fqx@+IGKBZD#~mry5rGAED!awt!7Dy#Afner)TGAm02D$BA- z#d0k}sw?BNEvwKgZ*nQ`axMdNFpJVK6LUl8@-ZWGFDtV{Fmp36a|Zb`92+wPYl2|1(1$G(}@{MvqQK zPxR$@v_%_FNQ<=YkaS7A&Pl`aNN;p8vvf;4b3wy&OfU3Ib2Q+n^heW8PNOtP+q6q- z^iSWk+winbi%n4*wbdYXPvf*u3$sr%xR<_|K+yhgbNAgZPge_=s<~h@1E=lz57(IEu5lSV2vD z|FMg|_$<(Pjmv^k<9LfJjf~HDjPE#)_l%GK_;?4oEdcqE!?<}XIW6>flRLSQL%EF) z`IJ*RlUq3~NO_iPIhJ#IDOCBFcR9)sc_e$em@7xfl)0IcIhv2T#;iFazf7FVxthCq zEZF&-n-!ev`JPV}o5KsED|)&}dZRD;qeHs5 zRJx@{I;LkjwQM@4Yr3a@`muz%x~PLXsh4`LoI0wTx~i`_tF(HNr#h@3`m5Xet+RTr z>-wzB`lS0hulIVX{5r4`yRZ-Yr4+ldD?75sI-e{%vnNWlyLz)bd$L3OwLklrP`k9( zNw<4Dw`)6|dkVORJC>MxwSW7#lRKoO`?&+jyTkj9$h*3uJG)=`y5oDh>-)ZMdyx1$ zzl(do|NDv5`z7}~!DD-pD7?TU$-#s2z&HHDXUW7De4kjn!vlQAUwou+e8*!-2mk;( DuXu^k literal 0 HcmV?d00001 diff --git a/themes/vivo-basic/site_icons/grouping/bg_propsWrap.gif b/themes/vivo-basic/site_icons/grouping/bg_propsWrap.gif new file mode 100644 index 0000000000000000000000000000000000000000..1280b1c7d759002a6fc52c0186c4193e1e9e6368 GIT binary patch literal 70 zcmZ?wbhEHbWMoifZeV1%dGjU%1B2pE7DfgJMg|=q8%U`#Gcd{a@UA@lmVfb_Ew{Qi Z-`n$>zwMF7v}c{mUY*+ZE{uV}8UUNa7;XRn literal 0 HcmV?d00001 diff --git a/themes/vivo-basic/site_icons/grouping/h3_tab_left-active.gif b/themes/vivo-basic/site_icons/grouping/h3_tab_left-active.gif new file mode 100644 index 0000000000000000000000000000000000000000..6010cc697d4db8a32043ea0e886ac2c5d2073898 GIT binary patch literal 589 zcmZ?wbhEHbY-LbjxXQrr|Ns9NwVKDu%)dOnd7{khY^C{&E{9*Onx`5)KHfe1w%hJh zz1y`Kv&VbpU7Qg6ce?wlKDVn?#t*hmxwEG2evSUkCcERMrnj2x-rqR(waemZtsK%^Gbw9t z+rDGxuHAd~?%RLh;Gx5N85DUWbxxf=bN1Z%3l}e4zH;^2^^446vbuNg-GA`#(c>pi zpFMx^^3_uzK^eUdA3uHm^7Y&IA3uNn{`2>Tf(YLp36Bj64mNWLYsH+{u<&rZfVkcT zhQ*7Hc1sv%-8r#w@$r5I=dLdr3JpDzHG)^goZPhZ^mK#dQ*%6p(|9JE7Qec4a`W?Z zS+nh$xn#YrsGVEnFiZC!nRO3ePQvr=ViZmw`Y zzp6H>Z0+rZx%W>!l`LNuyDanltF@8k>+esk{m(T`uwujgLv3G`{Bq1YA0MBf>^;wC R=ccEpXBcOnlVM@71^~%?C&~Z- literal 0 HcmV?d00001 diff --git a/themes/vivo-basic/site_icons/grouping/h3_tab_left.gif b/themes/vivo-basic/site_icons/grouping/h3_tab_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..025e8f919c84e15d5d38b264f0db0406621502df GIT binary patch literal 433 zcmZ?wbhEHb%wv#XIKsft*w|QIUER{sQdd{k)YR16+}zgIR$pJ=(9lp;R#s3@P*PG- zQBhG_Tl@e2|NZ;-uUxru)~s0*CQR74apS~^6KBqxId9%P2HZgLCkt3o2SkGGWMKWj zK)LT+NTA!Qbvdv173iEd@v#yM;&6KV|G@WSu^4UJ8C0vs&u9i3g>J-vPX6DCfY z+#$p;WyZ`|v*&a$F)UcPXz`Mz%a*TLxoY*Awd>Yz*tlu)maW^iFXGs>d(Yl|`wtvE zboj{8V|&?8o;rQz?78z7E?&BPYXs}9iaEJy>FMbP$%|qfHZMCn+oJf@os*lFpP%oLuO;ENWyQtC T9+S0VPi;M1%zo^yx^7Q7hGV>E zuhp1+oap{!|DxlirZ2i2p4RGo?XqAP1*0KA`w&q4$pW@S2SkGM1Ovx^21yPXj|~eB zHggDT#hlo%@Nm0;vez7sjY`Zy0!(Xmd|1$UykEgqPr`H4l9Q7)f>*_y+_d!cbc5tm zb38XM^PMEDQ}AJe(h`4Ghh{EWuPrMsF7}wL6?+2H^cgcEhTXS=B#^qJ9r?;)Wy**Lzz=sJ})th!#e13KJ^!D}l_ct(e%lYis@bGYl zu=clTrq$P&Cn$T*^VzxS>FF89+4s)u-2D9f0_SeIUP(5twQNDFduOA~x&`dGIpqEJ?D+Wj#ANOGb9;7vetu!G_k6#-zdrFTcjmisZtw2z z?;jlQ{x9#pZ_m%qFD|c+KfiD9?@tOfLNomL@B91v$LH7g&+p&=|33qp#)AeHv5bUz zr38UV3_NBp9yANMX*_HZ3CnocDv`G0VVg|Zi-+xE#~wI&FigpK)Tyy-#iK5rZ7&{m z8ywSk++%Vr<8iOWz84Pu3Qu1=?ss6*d@{jB?Bt_96{(d^Ci$4Xd@@;G>8A3Okg&|B zQ^UP}3QmhDd--&_Y1T`@87b2;)21hx6+D}jv&}PQR^Bnq=W`4Wc|M<8aV|4`Ud=bp zXY=aVv^1vjrA&CTphGQ7h4p6c$`^|#{M&J8;l!{k%^sP6s+Y^=%(8Hb%_`HFTG`_0A^YOCLD TI%D?w&E^Yw-r>xQj11NQge`<) literal 0 HcmV?d00001 diff --git a/themes/vivo-basic/site_icons/grouping/h3_tab_right.gif b/themes/vivo-basic/site_icons/grouping/h3_tab_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..f194293c0279364766d9b2dae6480a3a899ef5e2 GIT binary patch literal 710 zcmZ?wbhEHbJkKD(aFv0fy1Kftv9YD4rLL~7si~>Cxw);at*or9xVX5WprE0lp|-ZR zqN1X{zW)FJ|HqCUtE#HX%*^cT>nkcMnm&E{{{8#s&Yin{{rbGTyj81Km6n!vcXxMo zb{;)?G&?(c)22<8m6he?^DhQvD~E z6rIemntx$MiIzx?#-jG*({F?JKiE*=qbJSE(z@jGTdsQ_cGUQ-zy1Elp1SkzfB$bN z;Zjt|jc)Ad?CS36?JHwrWfyDfpEiBQ%vp5;^0}-F7A{)6Wa+ZyD^{*ry=LvY^&2*> zU}T!VY5R_yyLRu{yNX#dmgVq~qsNY)IC<*ynX~84U$}Vb@|80TLWi#2x_#&Fz55T& zGAqY2K70P+<*V0k-oAVP;p3;zU%r0({+^lj>5sqv{xdLh$#CQ|FxIgMYsH+{plI71 zE8;Q7W8Fo^FtQYL4gTWoKtw6u+9n z`9Nj*V@8K&E?KWFD=sefn5-3hYRk&Y%L5jxwF)?#7F!vyIqUAJt*fsuWe|%f-LPQI z&CMB?SH+&*w)Xb+g2$)kdT(DByIsH`h_9j+{`vj;|Nm!T+i{;oF5`iN0E0CE91Blc literal 0 HcmV?d00001