multiple updates and new files to support multiple foaf person profile pages
|
@ -237,3 +237,9 @@ RDFService.languageFilter = true
|
||||||
# Only set sandbox to True for dev/test environments. Comment out or set to False in production
|
# Only set sandbox to True for dev/test environments. Comment out or set to False in production
|
||||||
#
|
#
|
||||||
#OpenSocial.sandbox = True
|
#OpenSocial.sandbox = True
|
||||||
|
|
||||||
|
# MultiViews
|
||||||
|
# VIVO supports the simultaneous use of a full foaf:Person profile page view and a "quick" page view that emphasizes
|
||||||
|
# the individual's webpage presence. The following flag should be uncommented when implementing the multiple
|
||||||
|
# views.
|
||||||
|
#MultiViews.profilePageTypes=enabled
|
||||||
|
|
32
productMods/css/individual/ie7-quick-view.css
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
/* Fix for quickview admin panel */
|
||||||
|
#admin {
|
||||||
|
font-size:0.75em;
|
||||||
|
padding:0 0 0 0;
|
||||||
|
margin:0 0 0 0;
|
||||||
|
width:54%;
|
||||||
|
}
|
||||||
|
#admin h3 {
|
||||||
|
color:#fff;
|
||||||
|
font-size:12px;
|
||||||
|
padding:2px 2px 2px 2px;
|
||||||
|
margin:0 0 0 0;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
a.edit-individual {
|
||||||
|
margin-left:5px;
|
||||||
|
padding-bottom:5px;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
#verbose-mode {
|
||||||
|
padding-left:0px;
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#admin .uri-link {
|
||||||
|
padding-left:8px;
|
||||||
|
}
|
||||||
|
#verbose-mode .small {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
}
|
36
productMods/css/individual/ie7-standard-view.css
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
/* Fix for quickview admin panel */
|
||||||
|
#admin {
|
||||||
|
font-size:0.75em;
|
||||||
|
padding:0 0 0 0;
|
||||||
|
margin:0 0 8px 0;
|
||||||
|
width:100%;
|
||||||
|
height:75px;
|
||||||
|
}
|
||||||
|
#admin h3 {
|
||||||
|
color:#fff;
|
||||||
|
font-size:12px;
|
||||||
|
padding:2px 2px 2px 2px;
|
||||||
|
margin:0 0 0 0;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
a.edit-individual {
|
||||||
|
margin-left:5px;
|
||||||
|
padding-bottom:5px;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
#verbose-mode {
|
||||||
|
padding-left:0px;
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#admin .uri-link {
|
||||||
|
padding-left:8px;
|
||||||
|
}
|
||||||
|
#verbose-mode .small {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
}
|
||||||
|
.iconControlsEditable {
|
||||||
|
top:140px;
|
||||||
|
}
|
297
productMods/css/individual/individual-2column-view.css
Normal file
|
@ -0,0 +1,297 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
/* <------ INDIVIDUAL INTRO */
|
||||||
|
#individual-intro {
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: 0px; /* margin-bottom: 20px; out for redesign*/
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
/* <------ INDIVIDUAL INTRO - LEFT SIDE CONTENT */
|
||||||
|
#share-contact {
|
||||||
|
position: relative;
|
||||||
|
width: 166px;
|
||||||
|
float: left;
|
||||||
|
padding-right: 1.5em;
|
||||||
|
margin-right: 12px; /* added for redesign */
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
img.individual-photo {
|
||||||
|
width: 160px;
|
||||||
|
margin-left: 0;
|
||||||
|
float: left;
|
||||||
|
margin-right: 20px;
|
||||||
|
margin-bottom: 10px; /* changed for redesign, was 20px */
|
||||||
|
}
|
||||||
|
ul#phone-list {
|
||||||
|
font-size:0.9em;
|
||||||
|
}
|
||||||
|
#primary-email {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
#primary-email li:last-child, /* added for redesign */
|
||||||
|
#additional-emails li:last-child {
|
||||||
|
margin-bottom: 0; /* changed for redesign, was 18px */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* <------ INDIVIDUAL INTRO - RIGHT SIDE CONTENT */
|
||||||
|
.display-title-not-editable {
|
||||||
|
float-left;
|
||||||
|
font-size:1.15em;
|
||||||
|
/* padding-right:5em; */
|
||||||
|
}
|
||||||
|
.display-title-editable {
|
||||||
|
padding-left:0 !important;
|
||||||
|
margin-left:0 !important;
|
||||||
|
font-size:1em !important;
|
||||||
|
border:none !important;
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
div#titleContainer {
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
#individual-info {
|
||||||
|
margin-top:6px;
|
||||||
|
}
|
||||||
|
#individual-info h2 {
|
||||||
|
padding: 25px 0 10px 0; /* changed for redesign, was padding-bottom: 10px */
|
||||||
|
clear:both; /* added for redesign */
|
||||||
|
}
|
||||||
|
#individual-info h2#contactHeading {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
#individual-info h3#contact {
|
||||||
|
padding: 7px 0 5px 0;
|
||||||
|
margin:0 0 0 0 ;
|
||||||
|
}
|
||||||
|
h3.primary-email {
|
||||||
|
margin-top: -8px !important;
|
||||||
|
}
|
||||||
|
#individual-intro.person {
|
||||||
|
margin-bottom: 0; /* changed for redesign, was 30px */
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
#individual-info h1.foaf-person {
|
||||||
|
float:left;
|
||||||
|
padding-right:8px;
|
||||||
|
height:20px;
|
||||||
|
margin:-3px 8px 5px 0;
|
||||||
|
}
|
||||||
|
div#profileTypeContainer {
|
||||||
|
position:absolute;
|
||||||
|
right:0;
|
||||||
|
top:135px;
|
||||||
|
}
|
||||||
|
div#profileTypeContainer select {
|
||||||
|
float:none;
|
||||||
|
display:inline-block;
|
||||||
|
padding: .5em;
|
||||||
|
background: none repeat scroll 0 0 #FFFFFF;
|
||||||
|
border: 1px solid #E0DFDF;
|
||||||
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 0.8em;
|
||||||
|
}
|
||||||
|
div#profileTypeContainer h2 {
|
||||||
|
float:none;
|
||||||
|
display:inline-block;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:1em;
|
||||||
|
color:#5e6363;
|
||||||
|
padding:0 0 0 0;
|
||||||
|
}
|
||||||
|
span.iconControlsEditable {
|
||||||
|
position:absolute;
|
||||||
|
right:0;
|
||||||
|
top:82px;
|
||||||
|
}
|
||||||
|
span.iconControlsNotEditable {
|
||||||
|
position:absolute;
|
||||||
|
right:0;
|
||||||
|
top:3px;
|
||||||
|
}
|
||||||
|
#overview {
|
||||||
|
clear: both; /* changed for redesign, was left */
|
||||||
|
}
|
||||||
|
/* <------ INDIVIDUAL VISUALIZATION */
|
||||||
|
#visualization {
|
||||||
|
padding: 0 0 0 0; /* changed for redesign, was 0 0 0 20px */
|
||||||
|
background: #fff; /* added for redesign */
|
||||||
|
width:174px; /* added for redesign */
|
||||||
|
float:none; /* float:right; out for redesign */
|
||||||
|
}
|
||||||
|
#visualization h3 {
|
||||||
|
padding-top: 10px;
|
||||||
|
margin-bottom: 0; /* changed for redesign, was 10px */
|
||||||
|
}
|
||||||
|
p#networks {
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
.collaboratorship-link-separator { /* added for redesign */
|
||||||
|
margin-top: 10px;
|
||||||
|
border-top: 1px solid #DDE4E3;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
.sparkline_text {
|
||||||
|
font-size: .9em; /* changed for redesign, was .8em */
|
||||||
|
text-align: left;
|
||||||
|
line-height: 1.5em;
|
||||||
|
width: 180px;
|
||||||
|
}
|
||||||
|
span.collaboratorship-link a img{
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
td#totalPubs { /* added for redesign */
|
||||||
|
font-size: 1.35em;
|
||||||
|
background: url(../../images/individual/pub-total-bkgrnd.png) top left no-repeat;
|
||||||
|
text-align:center;
|
||||||
|
vertical-align:middle;
|
||||||
|
width:48px;
|
||||||
|
height:48px;
|
||||||
|
}
|
||||||
|
td#tenYearCount { /* added for redesign */
|
||||||
|
font-size: .85em;
|
||||||
|
padding-left:10px;
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
.infoIcon {
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
div#pub_count_short_sparkline_vis {
|
||||||
|
margin-top: 4px;
|
||||||
|
height: 48px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
/* <------ INDIVIDUAL TEMPORAL GRAPH */
|
||||||
|
#temporal-graph {
|
||||||
|
padding: 0 3px 8px 0; /* changed for redesign, was 0 3px 20px 0 */
|
||||||
|
background-color: #fff;
|
||||||
|
margin-top: -4px; /* added for redesign */
|
||||||
|
}
|
||||||
|
#temporal-graph h3 img {
|
||||||
|
padding-right: 10px;
|
||||||
|
vertical-align: middle; /* changed for redesign, was text-top */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* <------ INDIVIDUAL MAP O' SCIENCE */
|
||||||
|
#map-of-science {
|
||||||
|
padding: 0 3px 24px 0; /* changed for redesign, was 0 3px 20x 0 */
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
#map-of-science h3 img {
|
||||||
|
padding-right: 10px;
|
||||||
|
vertical-align: middle; /* changed for redesign, was text-top */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* <------ POSITIONS */
|
||||||
|
ul#individual-personInPosition {
|
||||||
|
list-style-type: circle;
|
||||||
|
padding-left: 10px; /* changed for redesign, was 20px */
|
||||||
|
margin: 10px 0 0 0; /* added for redesign */
|
||||||
|
}
|
||||||
|
ul#individual-personInPosition li {
|
||||||
|
line-height: 1em;
|
||||||
|
padding-bottom:10px; /* changed for redesign, was 15px */
|
||||||
|
}
|
||||||
|
ul#individual-personInPosition li:last-child {
|
||||||
|
padding-bottom: 3px; /* changed for redesign, was 15px */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* <------ CONTACTS AND WEBPAGES */
|
||||||
|
div#contactsWebpages {
|
||||||
|
width:100%;
|
||||||
|
display:inline;
|
||||||
|
clear:both
|
||||||
|
}
|
||||||
|
div#contactContainer {
|
||||||
|
width:50%;
|
||||||
|
float:left;
|
||||||
|
clear:both;
|
||||||
|
padding:0 21px 0 0;
|
||||||
|
}
|
||||||
|
div#webpagesContainer {
|
||||||
|
width:47%;
|
||||||
|
float:left;
|
||||||
|
clear:right;
|
||||||
|
padding:0 0 0 0;
|
||||||
|
}
|
||||||
|
div#contactOuterDiv {
|
||||||
|
width:100%;
|
||||||
|
display:inline;
|
||||||
|
}
|
||||||
|
div#contactEmailDiv {
|
||||||
|
width:68%;
|
||||||
|
float:left;
|
||||||
|
overflow:hidden;
|
||||||
|
}
|
||||||
|
div#contactPhoneDiv {
|
||||||
|
width:32%;
|
||||||
|
float:right;
|
||||||
|
text-align:right;
|
||||||
|
}
|
||||||
|
/* <------ RESEARCH AREA */
|
||||||
|
ul#individual-hasResearchArea li {
|
||||||
|
float: left;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin-right: 10px; /* added for redesign */
|
||||||
|
padding-left: 0; /* padding-left: 10px; out for redesign */
|
||||||
|
border-right: 1px solid #5e6363;
|
||||||
|
}
|
||||||
|
h2#researchAreas {
|
||||||
|
vertical-align:bottom;
|
||||||
|
}
|
||||||
|
/* <------ QR Code */
|
||||||
|
span#qrCodeImage {
|
||||||
|
position: absolute;
|
||||||
|
top: 30px; /* changed for redesign, was -9em */
|
||||||
|
left: -120px !important; /* added for redesign */
|
||||||
|
width:180px; /* added for redesign */
|
||||||
|
border: solid 2px #ccc;
|
||||||
|
background: #fff; /* changed for redesign, was #fff */
|
||||||
|
text-align:middle; /* added for redesign */
|
||||||
|
overflow:visible;
|
||||||
|
}
|
||||||
|
span#qrCodeImage img {
|
||||||
|
padding: 1.7em 1.7em 0 1.7em; /* changed for redesign, was 1.7em 1.7 em 0 1.7 em */
|
||||||
|
}
|
||||||
|
a.qrCloseLink {
|
||||||
|
float: right;
|
||||||
|
padding-right: 1em; /* added for redesign */
|
||||||
|
margin-right: 0; /* margin-right: .5em out for redesign */
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
|
/* MISCELLANEOUS------> */
|
||||||
|
span#quickViewLink {
|
||||||
|
clear:both;
|
||||||
|
padding-left:47%;
|
||||||
|
}
|
||||||
|
span#quickViewLink img {
|
||||||
|
margin-top:35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a#manageLabels { /* added for redesign but will work with existing templates */
|
||||||
|
margin-left:20px;
|
||||||
|
font-size:0.7em;
|
||||||
|
}
|
||||||
|
/****** FROM WILMA.CSS ******/
|
||||||
|
#individual-info h2.mainPropGroup {
|
||||||
|
border-bottom: 1px solid #DDE4E3;
|
||||||
|
padding-bottom:1px;
|
||||||
|
margin-bottom:8px;
|
||||||
|
}
|
||||||
|
#individual-info div#contactContainer h3{
|
||||||
|
color:#8aa149;
|
||||||
|
}
|
||||||
|
ul#individual-personInPosition li {
|
||||||
|
padding-bottom:12px;
|
||||||
|
margin-left:10px;
|
||||||
|
line-height: 1.25em !important;
|
||||||
|
}
|
||||||
|
ul#individual-personInPosition li:last-child {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
td#totalPubs {
|
||||||
|
color: #2485AE;
|
||||||
|
}
|
257
productMods/css/individual/individual-quick-view.css
Normal file
|
@ -0,0 +1,257 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
/* ADMIN PANEL------> */
|
||||||
|
#admin {
|
||||||
|
font-size: .8em;
|
||||||
|
padding: 0 0 0 0 ;
|
||||||
|
margin: -15px 0 4px 0;
|
||||||
|
float:left;
|
||||||
|
width:55%;
|
||||||
|
height:70px;
|
||||||
|
}
|
||||||
|
#admin h3 {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 3px 4px 3px 4px !important;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
#admin .uri-link {
|
||||||
|
padding:0 0 0 11px;
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
/* <------ HEADER CONTENT ---------> */
|
||||||
|
img.individual-photo {
|
||||||
|
width: 56px;
|
||||||
|
margin: -15px 10px 4px 0;
|
||||||
|
float: left;
|
||||||
|
border-width:2px !important;
|
||||||
|
}
|
||||||
|
h2#mainImage {
|
||||||
|
margin-top:36px;
|
||||||
|
margin-left:-10px;
|
||||||
|
float:left;
|
||||||
|
font-weight:bold;
|
||||||
|
width:80px !important;
|
||||||
|
}
|
||||||
|
section#label-title {
|
||||||
|
float:left;
|
||||||
|
width:88%;
|
||||||
|
}
|
||||||
|
.display-title-not-editable {
|
||||||
|
float-left;
|
||||||
|
font-size:1.15em;
|
||||||
|
}
|
||||||
|
.display-title-editable {
|
||||||
|
padding-left:0 !important;
|
||||||
|
margin-left:0 !important;
|
||||||
|
font-size:1em !important;
|
||||||
|
border:none !important;
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
div#titleContainer {
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
section#qv-share-contact {
|
||||||
|
width:49.1%;
|
||||||
|
float:left;
|
||||||
|
padding:0 .8em 0 0;
|
||||||
|
margin-left:-2em;
|
||||||
|
overflow:visible;
|
||||||
|
clear:left;
|
||||||
|
}
|
||||||
|
h2#preferredTitle {
|
||||||
|
color: #5E6363;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: bold;
|
||||||
|
padding:6px 0 0 0;
|
||||||
|
margin-top:48px;
|
||||||
|
}
|
||||||
|
/* <------ QR Code */
|
||||||
|
span#qrCodeImage {
|
||||||
|
position: absolute;
|
||||||
|
top: 30px; /* changed for redesign, was -9em */
|
||||||
|
left: 76% !important; /* added for redesign */
|
||||||
|
width:180px; /* added for redesign */
|
||||||
|
border: solid 2px #ccc;
|
||||||
|
background: #fff; /* changed for redesign, was #fff */
|
||||||
|
text-align:middle; /* added for redesign */
|
||||||
|
overflow:visible;
|
||||||
|
}
|
||||||
|
span#qrCodeImage img {
|
||||||
|
padding: 1.7em 1.7em 0 1.7em; /* changed for redesign, was 1.7em 1.7 em 0 1.7 em */
|
||||||
|
}
|
||||||
|
/* <----- WEBPAGE CONTENT LEFT SIDE -----> */
|
||||||
|
.edit-mainImage {
|
||||||
|
position: absolute;
|
||||||
|
/* background: rgba(255, 255, 255, 0.6); */
|
||||||
|
padding: 0 0 0 0;
|
||||||
|
top: 44px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.delete-mainImage {
|
||||||
|
position: absolute;
|
||||||
|
top: 44px;
|
||||||
|
left: 26px;
|
||||||
|
/* background: rgba(255, 255, 255, 0.6); */
|
||||||
|
padding: 0 0 0 8px;
|
||||||
|
}
|
||||||
|
div#webpage-wrapper {
|
||||||
|
background-color: #e4e8e7;
|
||||||
|
margin:-7px 0 -16px 0;
|
||||||
|
padding-bottom:9px;
|
||||||
|
padding-top:3px;
|
||||||
|
display:inline-block;
|
||||||
|
width: 456px;
|
||||||
|
}
|
||||||
|
h2.websites {
|
||||||
|
margin-left:15px;
|
||||||
|
padding:4px 0 0 0;
|
||||||
|
border-bottom: 1px solid #a1d2e2;
|
||||||
|
padding-bottom:3px;
|
||||||
|
width:418px;
|
||||||
|
color: #5E6363;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
ul.individual-webpage {
|
||||||
|
padding:18px 0 0 25px ;
|
||||||
|
}
|
||||||
|
ul.individual-webpage li:first-child {
|
||||||
|
padding: 0 0 0 0;
|
||||||
|
}
|
||||||
|
ul.individual-webpage li {
|
||||||
|
padding: 5px 5px 0 0;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
li.weblinkLarge {
|
||||||
|
margin-left:-14.5em;
|
||||||
|
margin-top:7em
|
||||||
|
}
|
||||||
|
li.weblinkSmall {
|
||||||
|
margin-left:-7.475em;
|
||||||
|
margin-top:3.425em
|
||||||
|
}
|
||||||
|
span.webpage-indicator-qv {
|
||||||
|
float:left;
|
||||||
|
font-size:0.825em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* <------ INDIVIDUAL INTRO - RIGHT SIDE CONTENT */
|
||||||
|
section#individual-intro {
|
||||||
|
overflow:visible ;
|
||||||
|
}
|
||||||
|
#individual-intro h1.fn {
|
||||||
|
padding-right:8px;
|
||||||
|
height:20px;
|
||||||
|
margin:-1px 8px 5px 0;
|
||||||
|
}
|
||||||
|
section.qv-individual-info {
|
||||||
|
float:left !important;
|
||||||
|
margin-right:-20px;
|
||||||
|
margin-left:7px;
|
||||||
|
}
|
||||||
|
#individual-info h2#personInPosition {
|
||||||
|
padding: 25px 0 2px 0;
|
||||||
|
}
|
||||||
|
span.iconControlsEditable {
|
||||||
|
float:right;
|
||||||
|
margin-top:1.2em
|
||||||
|
}
|
||||||
|
span.iconControlsNotEditable {
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
div#profileTypeContainer {
|
||||||
|
float:right;
|
||||||
|
margin-right:92px;
|
||||||
|
margin-top:12px;
|
||||||
|
}
|
||||||
|
div#profileTypeContainer select {
|
||||||
|
float:none;
|
||||||
|
display:inline-block;
|
||||||
|
padding: .5em;
|
||||||
|
background: none repeat scroll 0 0 #FFFFFF;
|
||||||
|
border: 1px solid #E0DFDF;
|
||||||
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 0.8em;
|
||||||
|
}
|
||||||
|
div#profileTypeContainer h2 {
|
||||||
|
margin-right:8px;
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:1em;
|
||||||
|
color:#5e6363;
|
||||||
|
padding:0 0 0 0;
|
||||||
|
float:none;
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
/* <------ INDIVIDUAL VISUALIZATION */
|
||||||
|
#visualization {
|
||||||
|
width:100%;
|
||||||
|
clear:both;
|
||||||
|
padding-top:0 !important;
|
||||||
|
background:red !important;
|
||||||
|
}
|
||||||
|
ul#individual-visualization li {
|
||||||
|
float: left;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
border-right: 1px solid #5e6363;
|
||||||
|
}
|
||||||
|
ul#individual-visualization li:last-child {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
/* <------ POSITIONS ------> */
|
||||||
|
ul#individual-personInPosition {
|
||||||
|
list-style-type: circle;
|
||||||
|
padding-left: 10px; /* changed for redesign, was 20px */
|
||||||
|
margin: 10px 0 0 0; /* added for redesign */
|
||||||
|
}
|
||||||
|
ul#individual-hasResearchArea li {
|
||||||
|
float: left;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin-right: 10px; /* added for redesign */
|
||||||
|
padding-left: 0; /* padding-left: 10px; out for redesign */
|
||||||
|
border-right: 1px solid #5e6363 ;
|
||||||
|
white-space:nowrap !important;
|
||||||
|
}
|
||||||
|
ul#individual-hasResearchArea li:last-child {
|
||||||
|
white-space:nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul#individual-personInPosition li {
|
||||||
|
margin-left: 8px !important;
|
||||||
|
}
|
||||||
|
/* <------ GEOGRAPHIC FOCUS */
|
||||||
|
ul#individual-geographicFocus li {
|
||||||
|
float: left;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
border-right: 1px solid #5e6363;
|
||||||
|
}
|
||||||
|
ul#individual-geographicFocus li:last-child {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
/* <------ MISC. ------> */
|
||||||
|
span#fullViewLink {
|
||||||
|
position:relative;
|
||||||
|
padding-left:47%;
|
||||||
|
}
|
||||||
|
/****** FROM WILMA.CSS ******/
|
||||||
|
#individual-info h2.mainPropGroup {
|
||||||
|
border-bottom: 1px solid #DDE4E3;
|
||||||
|
padding-bottom:1px;
|
||||||
|
margin-bottom:8px;
|
||||||
|
}
|
||||||
|
ul#individual-personInPosition li {
|
||||||
|
padding-bottom:12px;
|
||||||
|
margin-left:10px;
|
||||||
|
line-height: 1.25em !important;
|
||||||
|
}
|
||||||
|
ul#individual-personInPosition li:last-child {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
#individual-info h2 {
|
||||||
|
padding: 25px 0 10px 0; /* changed for redesign, was padding-bottom: 10px */
|
||||||
|
clear:both; /* added for redesign */
|
||||||
|
}
|
|
@ -14,9 +14,11 @@ ul#individual-tools li {
|
||||||
ul#individual-phone {
|
ul#individual-phone {
|
||||||
clear: both;
|
clear: both;
|
||||||
list-style-type: circle;
|
list-style-type: circle;
|
||||||
|
margin-left: 15px;
|
||||||
}
|
}
|
||||||
ul#individual-phone li {
|
ul#individual-phone li {
|
||||||
font-size: .875em;
|
font-size: .875em;
|
||||||
|
line-height: 1.5em;
|
||||||
}
|
}
|
||||||
ul#individual-phone li:last-child {
|
ul#individual-phone li:last-child {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
@ -25,26 +27,35 @@ ul#individual-phone li:first-child {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
.icon-phone, .icon-email {
|
.icon-phone, .icon-email {
|
||||||
padding-right: 5px;
|
padding-right: 2px;
|
||||||
}
|
}
|
||||||
#individual-intro ul.individual-urls {
|
#individual-intro ul.individual-urls {
|
||||||
list-style-type: circle;
|
list-style-type: circle;
|
||||||
margin-left: 20px;
|
margin-left: 15px;
|
||||||
}
|
}
|
||||||
#individual-intro ul.individual-urls li {
|
#individual-intro ul.individual-urls li {
|
||||||
font-size: .875em;
|
font-size: .875em;
|
||||||
line-height: 1.7em;
|
line-height: 1.5em;
|
||||||
|
padding-bottom:5px;
|
||||||
}
|
}
|
||||||
ul.individual-emails {
|
ul.individual-emails {
|
||||||
clear: both;
|
clear: both;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
|
list-style-type: circle;
|
||||||
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
#additional-emails li:last-child {
|
#additional-emails li:last-child {
|
||||||
margin-bottom: 18px;
|
margin-bottom: 18px;
|
||||||
}
|
}
|
||||||
ul.individual-emails li {
|
ul.individual-emails li {
|
||||||
font-size: .875em;
|
font-size: .875em;
|
||||||
line-height: 1.3em;
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
ul#individual-phone {
|
||||||
|
list-style: url(../../images/phoneIconSmall.gif);
|
||||||
|
}
|
||||||
|
ul.individual-emails {
|
||||||
|
list-style: url(../../images/emailIconSmall.gif);
|
||||||
}
|
}
|
||||||
ul#webpages{
|
ul#webpages{
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
@ -83,11 +94,9 @@ ul#additional-emails li {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
float: none;
|
float: none;
|
||||||
}
|
}
|
||||||
ul#individual-tools-people {
|
div#individual-tools-people {
|
||||||
margin-top: 5px;
|
|
||||||
height: 20px;
|
height: 20px;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 24px;
|
||||||
list-style-type: none;
|
|
||||||
clear: both;
|
clear: both;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
@ -126,12 +135,12 @@ div.overview-value :last-child {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
/* <------ INDIVIDUAL VISUALIZATION */
|
/* <------ INDIVIDUAL VISUALIZATION */
|
||||||
#visualization {
|
#right-hand-column {
|
||||||
padding: 0 0 0 20px;
|
padding: 0 0 0 20px;
|
||||||
float: right;
|
float: right;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
#visualization h3 {
|
#right-hand-column h3 {
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
@ -231,7 +240,7 @@ a.qrCloseLink {
|
||||||
}
|
}
|
||||||
/* MISCELLANEOUS------> */
|
/* MISCELLANEOUS------> */
|
||||||
.listDateTime {
|
.listDateTime {
|
||||||
padding: 0.2em 0.4em;
|
padding: 0 0.4em;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
background: #f4f4f4;
|
background: #f4f4f4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ span.incomplete-data-holder,
|
||||||
}
|
}
|
||||||
.collaboratorship-icon {
|
.collaboratorship-icon {
|
||||||
float: left;
|
float: left;
|
||||||
padding-right: 5px;
|
padding-right: 8px;
|
||||||
}
|
}
|
||||||
.collaboratorship-link a {
|
.collaboratorship-link a {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
|
@ -48,12 +48,12 @@ span.incomplete-data-holder,
|
||||||
border-top: 1px dotted #A6B1B0;
|
border-top: 1px dotted #A6B1B0;
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
}
|
}
|
||||||
.sparkline_text {
|
.sparkline_text, .grey-text {
|
||||||
font-size: .8em;
|
font-size: .9em;
|
||||||
font-weight: bold;
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
width: 180px;
|
width: 180px;
|
||||||
|
color: #5e6363;
|
||||||
}
|
}
|
||||||
.google-visualization-sparkline-default {
|
.google-visualization-sparkline-default {
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
@ -80,6 +80,7 @@ span.incomplete-data-holder,
|
||||||
.infoIcon {
|
.infoIcon {
|
||||||
padding-right:30px;
|
padding-right:30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------*/
|
/* ---------------------------*/
|
||||||
/* Visualization Tools -------*/
|
/* Visualization Tools -------*/
|
||||||
/* ---------------------------*/
|
/* ---------------------------*/
|
||||||
|
|
BIN
productMods/images/individual/contact-info-icon.png
Normal file
After Width: | Height: | Size: 677 B |
BIN
productMods/images/individual/fullViewBubble.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
productMods/images/individual/fullViewIcon.png
Normal file
After Width: | Height: | Size: 4 KiB |
BIN
productMods/images/individual/pub-total-bkgrnd.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
productMods/images/individual/qr-code-icon.png
Normal file
After Width: | Height: | Size: 764 B |
BIN
productMods/images/individual/quickViewBubble.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
productMods/images/individual/quickViewIcon.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
productMods/images/individual/research-group-icon.png
Normal file
After Width: | Height: | Size: 790 B |
BIN
productMods/images/individual/researchAreaBubble.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
productMods/images/individual/share-uri-icon.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
productMods/images/individual/weblinkIconLarge.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
productMods/images/individual/weblinkIconSmall.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
productMods/images/individual/webpage-popout-bottom.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
productMods/images/individual/webpage-popout-top.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
78
productMods/js/individual/individualProfilePageType.js
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
var profilePageType = {
|
||||||
|
|
||||||
|
/* *** Initial page setup *** */
|
||||||
|
|
||||||
|
onLoad: function() {
|
||||||
|
|
||||||
|
this.mixIn();
|
||||||
|
// in the event that the individual does not have a profile type set,
|
||||||
|
// the controller returns "none" and the select is set to "standard".
|
||||||
|
// we need to distinguish these when it comes time to do a retraction or
|
||||||
|
// not. So "default" = the type defined by the triple; "selected" =
|
||||||
|
// the selected option.
|
||||||
|
var selectedProfileType = "";
|
||||||
|
this.initPage();
|
||||||
|
},
|
||||||
|
|
||||||
|
mixIn: function() {
|
||||||
|
|
||||||
|
// Get the custom form data from the page
|
||||||
|
$.extend(this, profileTypeData);
|
||||||
|
},
|
||||||
|
|
||||||
|
// Initial page setup. Called only at page load.
|
||||||
|
initPage: function() {
|
||||||
|
|
||||||
|
profilePageType.selectedProfileType = $('select#profilePageType').val();
|
||||||
|
this.bindEventListeners();
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
bindEventListeners: function() {
|
||||||
|
|
||||||
|
$('select#profilePageType').change( function() {
|
||||||
|
profilePageType.processSelection($('select#profilePageType').val())
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
processSelection: function(newType) {
|
||||||
|
|
||||||
|
// if no profile page type is defined for this individual, don't do a retraction but pass an empty string to the controller
|
||||||
|
var retract = "";
|
||||||
|
var add = "<" + profilePageType.individualUri + "> <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#hasDefaultProfilePageType> "
|
||||||
|
+ "<http://vitro.mannlib.cornell.edu/ontologies/display/1.1#" + newType + "> .";
|
||||||
|
|
||||||
|
if ( profilePageType.defaultProfileType != "none" ) {
|
||||||
|
retract = "<" + profilePageType.individualUri + "> <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#hasDefaultProfilePageType> "
|
||||||
|
+ "<http://vitro.mannlib.cornell.edu/ontologies/display/1.1#" + profilePageType.selectedProfileType + "> .";
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: profilePageType.processingUrl,
|
||||||
|
type: 'POST',
|
||||||
|
data: {
|
||||||
|
additions: add,
|
||||||
|
retractions: retract
|
||||||
|
},
|
||||||
|
dataType: 'json',
|
||||||
|
context: newType, // context for callback
|
||||||
|
complete: function(request, status) {
|
||||||
|
|
||||||
|
if (status == 'success') {
|
||||||
|
location.reload(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
alert('Error processing request: the unchecked labels could not be deleted.');
|
||||||
|
$('select#profilePageType').val(profilePageType.selectedProfileType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
profilePageType.onLoad();
|
||||||
|
});
|
119
productMods/js/individual/individualQtipBubble.js
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
// This function creates and styles the "qTip" tooltip that displays the bubble text when the user hovers
|
||||||
|
// over the research area "group" icon.
|
||||||
|
$('#researchAreaIcon').each(function()
|
||||||
|
{
|
||||||
|
$(this).qtip(
|
||||||
|
{
|
||||||
|
content: {
|
||||||
|
prerender: true,
|
||||||
|
text: ' '
|
||||||
|
},
|
||||||
|
position: {
|
||||||
|
corner: {
|
||||||
|
target: 'topleft',
|
||||||
|
tooltip: 'bottomcenter'
|
||||||
|
},
|
||||||
|
adjust: {
|
||||||
|
x:22,
|
||||||
|
y:30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show: {
|
||||||
|
when: {
|
||||||
|
event: 'mouseenter'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hide: {
|
||||||
|
fixed: false,
|
||||||
|
when: {
|
||||||
|
event: 'mouseleave'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
padding: '0em',
|
||||||
|
height: 56,
|
||||||
|
width: 180,
|
||||||
|
border: 'none',
|
||||||
|
background:'url(' + imagesPath + '/individual/researchAreaBubble.png) no-repeat'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#fullViewIcon').each(function()
|
||||||
|
{
|
||||||
|
$(this).qtip(
|
||||||
|
{
|
||||||
|
content: {
|
||||||
|
text: ' '
|
||||||
|
},
|
||||||
|
position: {
|
||||||
|
corner: {
|
||||||
|
target: 'topleft',
|
||||||
|
tooltip: 'bottomcenter'
|
||||||
|
},
|
||||||
|
adjust: {
|
||||||
|
x:27,
|
||||||
|
y:30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show: {
|
||||||
|
|
||||||
|
when: {
|
||||||
|
event: 'mouseenter'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hide: {
|
||||||
|
fixed: false,
|
||||||
|
when: {
|
||||||
|
event: 'mouseleave'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
padding: '0em',
|
||||||
|
height: 56,
|
||||||
|
width: 140,
|
||||||
|
border: 'none',
|
||||||
|
background: 'url(' + imagesPath + '/individual/quickViewBubble.png) no-repeat'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#quickViewIcon').each(function()
|
||||||
|
{
|
||||||
|
$(this).qtip(
|
||||||
|
{
|
||||||
|
content: {
|
||||||
|
text: ' '
|
||||||
|
},
|
||||||
|
position: {
|
||||||
|
corner: {
|
||||||
|
target: 'topleft',
|
||||||
|
tooltip: 'bottomcenter'
|
||||||
|
},
|
||||||
|
adjust: {
|
||||||
|
x:28,
|
||||||
|
y:30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show: {
|
||||||
|
when: {event: 'mouseenter'}
|
||||||
|
},
|
||||||
|
hide: {
|
||||||
|
fixed: false,
|
||||||
|
when: {
|
||||||
|
event: 'mouseleave'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
padding: '0em',
|
||||||
|
height: 56,
|
||||||
|
width: 144,
|
||||||
|
border: 'none',
|
||||||
|
background: 'url(' + imagesPath + '/individual/fullViewBubble.png) no-repeat'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -131,8 +131,10 @@ $(document).ready(function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
// if there are webpages but no contacts (email/phone), extend
|
// if there are webpages but no contacts (email/phone), extend
|
||||||
// the webpage border the full width. Used with "standard" profile view.
|
// the webpage border the full width. Used with "2 column" profile view.
|
||||||
if ( $('h2#contactHeading').length < 1 ) {
|
if ( $('h2#contactHeading').length < 1 ) {
|
||||||
|
if ( $('div#webpagesContainer').length ) {
|
||||||
$('div#webpagesContainer').css('width', '100%').css('clear','both');
|
$('div#webpagesContainer').css('width', '100%').css('clear','both');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<#-- Do not show the link for temporal visualization unless it's enabled -->
|
<#-- Do not show the link for temporal visualization unless it's enabled -->
|
||||||
<#if temporalVisualizationEnabled>
|
<#if temporalVisualizationEnabled>
|
||||||
<#assign classSpecificExtension>
|
<#assign classSpecificExtension>
|
||||||
<section id="visualization" role="region">
|
<section id="right-hand-column" role="region">
|
||||||
<#include "individual-visualizationTemporalGraph.ftl">
|
<#include "individual-visualizationTemporalGraph.ftl">
|
||||||
<#include "individual-visualizationMapOfScience.ftl">
|
<#include "individual-visualizationMapOfScience.ftl">
|
||||||
</section> <!-- #visualization -->
|
</section> <!-- #visualization -->
|
||||||
|
|
|
@ -0,0 +1,174 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Individual profile page template for foaf:Person individuals -->
|
||||||
|
<!--[if IE 7]>
|
||||||
|
<link rel="stylesheet" href="${urls.base}/css/individual/ie7-standard-view.css" />
|
||||||
|
<![endif]-->
|
||||||
|
<#-- <#include "individual-setup.ftl"> -->
|
||||||
|
<#import "individual-qrCodeGenerator.ftl" as qr>
|
||||||
|
<#import "lib-vivo-properties.ftl" as vp>
|
||||||
|
<#if !labelCount??>
|
||||||
|
<#assign labelCount = 0 >
|
||||||
|
</#if>
|
||||||
|
<section id="individual-intro" class="vcard person" role="region">
|
||||||
|
<section id="share-contact" role="region">
|
||||||
|
<#-- Image -->
|
||||||
|
<#assign individualImage>
|
||||||
|
<@p.image individual=individual
|
||||||
|
propertyGroups=propertyGroups
|
||||||
|
namespaces=namespaces
|
||||||
|
editable=editable
|
||||||
|
showPlaceholder="always" />
|
||||||
|
</#assign>
|
||||||
|
|
||||||
|
<#if ( individualImage?contains('<img class="individual-photo"') )>
|
||||||
|
<#assign infoClass = 'class="withThumb"'/>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<div id="photo-wrapper" >${individualImage}</div>
|
||||||
|
|
||||||
|
<#include "individual-visualizationFoafPerson.ftl">
|
||||||
|
</section> <!-- end share-contact -->
|
||||||
|
<section id="individual-info" ${infoClass!} role="region">
|
||||||
|
<#include "individual-adminPanel.ftl">
|
||||||
|
<header>
|
||||||
|
<#if relatedSubject??>
|
||||||
|
<h2>${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}</h2>
|
||||||
|
<p><a href="${relatedSubject.url}" title="return to">← return to ${relatedSubject.name}</a></p>
|
||||||
|
<#else>
|
||||||
|
<h1 class="vcard foaf-person fn" <#if !editable>style="float:left;border-right:1px solid #A6B1B0;"</#if>>
|
||||||
|
<#-- Label -->
|
||||||
|
<@p.label individual editable labelCount/>
|
||||||
|
</h1>
|
||||||
|
<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes -->
|
||||||
|
<#assign title = propertyGroups.pullProperty("${core}preferredTitle")!>
|
||||||
|
<#if title?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<@p.addLinkWithLabel title editable />
|
||||||
|
<#list title.statements as statement>
|
||||||
|
<#if !editable >
|
||||||
|
<div id="titleContainer"><span class="display-title-not-editable">${statement.value}</span></div>
|
||||||
|
<#else>
|
||||||
|
<span class="display-title-editable">${statement.value}</span>
|
||||||
|
<@p.editingLinks "${title.name}" statement editable />
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</#if>
|
||||||
|
<#-- If preferredTitle is unpopulated, display mostSpecificTypes -->
|
||||||
|
<#if ! (title.statements)?has_content>
|
||||||
|
<@p.mostSpecificTypesPerson individual editable/>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
<span class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>">
|
||||||
|
<#include "individual-iconControls.ftl">
|
||||||
|
</span>
|
||||||
|
<#if editable && profilePageTypesEnabled >
|
||||||
|
<div id="profileTypeContainer">
|
||||||
|
<h2>Profile type</h2>
|
||||||
|
<select id="profilePageType">
|
||||||
|
<option value="standard" <#if profileType == "standard" || profileType == "none">selected</#if> >Standard profile view</option>
|
||||||
|
<option value="quickView" <#if profileType == "quickView">selected</#if> >Quick profile view</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</header>
|
||||||
|
<!-- Positions -->
|
||||||
|
<#include "individual-positions.ftl">
|
||||||
|
|
||||||
|
<!-- Overview -->
|
||||||
|
<#if !editable>
|
||||||
|
<p></p>
|
||||||
|
</#if>
|
||||||
|
<#include "individual-overview.ftl">
|
||||||
|
|
||||||
|
<!-- Research Areas -->
|
||||||
|
<#include "individual-researchAreas.ftl">
|
||||||
|
|
||||||
|
<!-- Contact and Webpages -->
|
||||||
|
<!-- VIVO Cornell does not use the contacts properties, so that include has been removed. -->
|
||||||
|
<div id="contactsWebpages">
|
||||||
|
<div id="contactContainer" >
|
||||||
|
<#include "individual-contactInfo-2column.ftl">
|
||||||
|
</div> <!-- contactContainer -->
|
||||||
|
<div id="webpagesContainer">
|
||||||
|
<#assign webpage = propertyGroups.pullProperty("${core}webpage")!>
|
||||||
|
<#if webpage?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<h2 id="webpage" class="mainPropGroup">Websites <@p.addLink webpage editable ""/></h2>
|
||||||
|
<@p.verboseDisplay webpage />
|
||||||
|
<#assign localName = webpage.localName>
|
||||||
|
<ul id="individual-${localName}" role="list">
|
||||||
|
<@p.objectProperty webpage editable />
|
||||||
|
</ul>
|
||||||
|
</#if>
|
||||||
|
</div> <!-- webpagesContainer -->
|
||||||
|
</div> <!-- contactsWebpages -->
|
||||||
|
<#include "individual-openSocial.ftl">
|
||||||
|
</section> <!-- end individual-info -->
|
||||||
|
</section> <!-- end individual-intro -->
|
||||||
|
|
||||||
|
<#assign nameForOtherGroup = "other"> <#-- individual-properties.ftl -->
|
||||||
|
<#-- Ontology properties -->
|
||||||
|
<#if !editable>
|
||||||
|
<#-- We don't want to see the first name and last name unless we might edit them. -->
|
||||||
|
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
|
||||||
|
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#include "individual-property-group-tabs.ftl">
|
||||||
|
|
||||||
|
<#if targetedView?has_content || user.loggedIn >
|
||||||
|
<span id="quickViewLink" >
|
||||||
|
<a href="${urls.base}/display/${individual.localName}?destination=quickView" >
|
||||||
|
<img id="quickViewIcon" src="${urls.images}/individual/quickViewIcon.png" alt="full view icon"/>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</#if>
|
||||||
|
<#if !editable>
|
||||||
|
<script>
|
||||||
|
var title = $('div#titleContainer').width();
|
||||||
|
var name = $('h1.vcard').width();
|
||||||
|
var total = parseInt(title,10) + parseInt(name,10);
|
||||||
|
if ( name < 280 && total > 600 ) {
|
||||||
|
var diff = total - 600;
|
||||||
|
$('div#titleContainer').width(title - diff);
|
||||||
|
}
|
||||||
|
else if ( name > 279 && name + title > 600 ) {
|
||||||
|
$('div#titleContainer').width('620');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</#if>
|
||||||
|
<script>
|
||||||
|
var individualLocalName = "${individual.localName}";
|
||||||
|
var imagesPath = '${urls.images}';
|
||||||
|
</script>
|
||||||
|
<#assign rdfUrl = individual.rdfUrl>
|
||||||
|
|
||||||
|
<#if rdfUrl??>
|
||||||
|
<script>
|
||||||
|
var individualRdfUrl = '${rdfUrl}';
|
||||||
|
</script>
|
||||||
|
</#if>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var profileTypeData = {
|
||||||
|
processingUrl: '${urls.base}/edit/primitiveRdfEdit',
|
||||||
|
individualUri: '${individual.uri!}',
|
||||||
|
defaultProfileType: '${profileType!}'
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/individual/individual.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-vivo.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-2column-view.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css" />')}
|
||||||
|
|
||||||
|
${headScripts.add('<script type="text/javascript" src="${urls.base}/js/tiny_mce/tiny_mce.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/qtip/jquery.qtip-1.0.0-rc3.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/amplify/amplify.store.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/json2.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.truncator.js"></script>')}
|
||||||
|
|
||||||
|
${scripts.add('<script type="text/javascript" src="${urls.base}/js/individual/individualUriRdf.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualQtipBubble.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualUtils.js?vers=1.5.1"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualProfilePageType.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/imageUpload/imageUploadUtils.js"></script>')}
|
|
@ -0,0 +1,232 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- The "quick view" individual profile page template for foaf:Person individuals -->
|
||||||
|
<!--[if IE 7]>
|
||||||
|
<link rel="stylesheet" href="${urls.base}/css/individual/ie7-quick-view.css" />
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
<#-- <#include "individual-setup.ftl"> -->
|
||||||
|
<#import "individual-qrCodeGenerator.ftl" as qr>
|
||||||
|
<#import "lib-vivo-properties.ftl" as vp>
|
||||||
|
|
||||||
|
<#if !labelCount??>
|
||||||
|
<#assign labelCount = 0 >
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#assign individualImage>
|
||||||
|
<@p.image individual=individual
|
||||||
|
propertyGroups=propertyGroups
|
||||||
|
namespaces=namespaces
|
||||||
|
editable=editable
|
||||||
|
showPlaceholder="always"/>
|
||||||
|
</#assign>
|
||||||
|
|
||||||
|
<#--
|
||||||
|
the display in this template is driven by whether the individual has a web page,
|
||||||
|
so set this variable now
|
||||||
|
-->
|
||||||
|
<#assign hasWebpage = false>
|
||||||
|
<#assign web = individual.propertyList.getProperty("${core}webpage")!>
|
||||||
|
<#if editable >
|
||||||
|
<#if web.first()?? >
|
||||||
|
<#assign hasWebpage = true>
|
||||||
|
<#else>
|
||||||
|
<#assign hasWebpage = false>
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
<#if (web?size > 0) >
|
||||||
|
<#assign hasWebpage = true>
|
||||||
|
<#else>
|
||||||
|
<#assign hasWebpage = false>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<section id="individual-intro" class="vcard person" role="region">
|
||||||
|
<section id="label-title" <#if editable>style="width:45%"</#if> >
|
||||||
|
<header>
|
||||||
|
<#if relatedSubject??>
|
||||||
|
<h2>${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}</h2>
|
||||||
|
<p><a href="${relatedSubject.url}" title="return to">← return to ${relatedSubject.name}</a></p>
|
||||||
|
<#else>
|
||||||
|
<#-- Image -->
|
||||||
|
<div id="photo-wrapper">${individualImage}</div>
|
||||||
|
<h1 class="vcard foaf-person fn" <#if !editable>style="float:left;border-right:1px solid #A6B1B0;"</#if>>
|
||||||
|
<#-- Label -->
|
||||||
|
<@p.label individual editable labelCount/>
|
||||||
|
</h1>
|
||||||
|
<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes -->
|
||||||
|
<#assign title = propertyGroups.pullProperty("${core}preferredTitle")!>
|
||||||
|
<#if title?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<@p.addLinkWithLabel title editable />
|
||||||
|
<#list title.statements as statement>
|
||||||
|
<#if !editable >
|
||||||
|
<div id="titleContainer"><span class="display-title-not-editable">${statement.value}</span></div>
|
||||||
|
<#else>
|
||||||
|
<span class="display-title-editable">${statement.value}</span>
|
||||||
|
<@p.editingLinks "${title.name}" statement editable />
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</#if>
|
||||||
|
<#-- If preferredTitle is unpopulated, display mostSpecificTypes -->
|
||||||
|
<#if ! (title.statements)?has_content>
|
||||||
|
<@p.mostSpecificTypesPerson individual editable />
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
</header>
|
||||||
|
</section> <!-- end label-title -->
|
||||||
|
<#include "individual-adminPanel.ftl">
|
||||||
|
|
||||||
|
<span class="<#if editable >iconControlsEditable<#else>iconControlsNotEditable</#if>">
|
||||||
|
<#include "individual-iconControls.ftl">
|
||||||
|
</span>
|
||||||
|
<#if editable && profilePageTypesEnabled >
|
||||||
|
<div id="profileTypeContainer" <#if editable>style="margin-top:22px"</#if>>
|
||||||
|
<h2>Profile type</h2>
|
||||||
|
<select id="profilePageType">
|
||||||
|
<option value="standard" <#if profileType == "standard" || profileType == "none">selected</#if> >Standard profile view</option>
|
||||||
|
<option value="quickView" <#if profileType == "quickView">selected</#if> >Quick profile view</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#--
|
||||||
|
If this individual has a web page or pages, then we highlight them on the left-hand side
|
||||||
|
of the profile page against a shaded background. If not, all the right-hand content shifts
|
||||||
|
left and displays across the full width of the page.
|
||||||
|
-->
|
||||||
|
<#if hasWebpage >
|
||||||
|
<section id="qv-share-contact" class="share-contact" role="region" <#if !editable>style="padding-top:12px"</#if>>
|
||||||
|
<img id="webpage-popout-top" src="${urls.images}/individual/webpage-popout-top.png" alt="background top"/>
|
||||||
|
<div id="webpage-wrapper" >
|
||||||
|
<#assign webpage = propertyGroups.pullProperty("${core}webpage")!>
|
||||||
|
<#if webpage?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<#if editable>
|
||||||
|
<h2 class="websites" >Websites <@p.addLink webpage editable ""/></h2>
|
||||||
|
</#if>
|
||||||
|
<@p.verboseDisplay webpage />
|
||||||
|
<#assign localName = webpage.localName>
|
||||||
|
<ul id="individual-${localName}" class="individual-webpage" role="list">
|
||||||
|
<@p.objectProperty webpage editable "propStatement-webpage-quickview.ftl"/>
|
||||||
|
</ul>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
<img id="webpage-popout-bottom" src="${urls.images}/individual/webpage-popout-bottom.png" alt="background top" <#if editable>style="margin-top:16px"</#if>/>
|
||||||
|
</section> <!-- end share-contact -->
|
||||||
|
</#if>
|
||||||
|
<section id="individual-info" class="qv-individual-info" role="region" style=" <#if !editable>padding-top:12px;</#if><#if hasWebpage>width:53%<#else>width:100%;clear:left</#if>;">
|
||||||
|
<!-- Positions -->
|
||||||
|
<#include "individual-positions.ftl">
|
||||||
|
|
||||||
|
<!-- Research Areas -->
|
||||||
|
<#include "individual-researchAreas.ftl">
|
||||||
|
|
||||||
|
<!-- Geographic Focus -->
|
||||||
|
<#assign geographicFocus = propertyGroups.pullProperty("${core}geographicFocus")!>
|
||||||
|
<#if geographicFocus?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<h2 id="geoFocus" class="mainPropGroup">Geographic Focus <@p.addLink geographicFocus editable ""/></h2>
|
||||||
|
<@p.verboseDisplay geographicFocus />
|
||||||
|
<#assign localName = geographicFocus.localName>
|
||||||
|
|
||||||
|
<#if geographicFocus.subclasses?has_content >
|
||||||
|
<#assign subclasses = geographicFocus.subclasses>
|
||||||
|
<#list subclasses as subclass>
|
||||||
|
<#assign subclassName = subclass.name!>
|
||||||
|
<ul id="individual-${localName}" role="list">
|
||||||
|
<@p.objectPropertyList geographicFocus editable subclass.statements geographicFocus.template/>
|
||||||
|
</ul>
|
||||||
|
</#list>
|
||||||
|
<#else>
|
||||||
|
<ul id="individual-${localName}" role="list">
|
||||||
|
<@p.objectProperty geographicFocus editable />
|
||||||
|
</ul>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#-- If the individual does not have webpages and we're in edit mode, provide the opportunity to add webpages -->
|
||||||
|
<#if editable && !hasWebpage >
|
||||||
|
<!-- Webpages -->
|
||||||
|
<#assign webpage = propertyGroups.pullProperty("${core}webpage")!>
|
||||||
|
<#if webpage?has_content>
|
||||||
|
<h2 id="webpage" class="mainPropGroup">Websites <@p.addLink webpage editable ""/></h2>
|
||||||
|
<@p.verboseDisplay webpage />
|
||||||
|
<#assign localName = webpage.localName>
|
||||||
|
<ul id="individual-${localName}" role="list">
|
||||||
|
<@p.objectProperty webpage editable />
|
||||||
|
</ul>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
<#include "individual-visualizationQuickView.ftl">
|
||||||
|
|
||||||
|
<#include "individual-openSocial.ftl">
|
||||||
|
</section> <!-- end individual-info -->
|
||||||
|
</section> <!-- end end individual-intro -->
|
||||||
|
<!-- we need these 3 lines of html to provide proper spacing and alignment -->
|
||||||
|
<p style="clear:both">
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
<span id="fullViewLink">
|
||||||
|
<a href="${urls.base}/display/${individual.localName}?destination=standardView" >
|
||||||
|
<img id="fullViewIcon" src="${urls.images}/individual/fullViewIcon.png" alt="full view icon"/>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<#if !editable>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var title = $('div#titleContainer').width();
|
||||||
|
var name = $('h1.vcard').width();
|
||||||
|
var total = parseInt(title,10) + parseInt(name,10);
|
||||||
|
if ( name < 400 && total > 730 ) {
|
||||||
|
var diff = total - 730;
|
||||||
|
$('div#titleContainer').width(title - diff);
|
||||||
|
}
|
||||||
|
else if ( name > 399 && name + title > 730 ) {
|
||||||
|
$('div#titleContainer').width('720');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</#if>
|
||||||
|
<script>
|
||||||
|
var individualLocalName = "${individual.localName}";
|
||||||
|
var imagesPath = '${urls.images}';
|
||||||
|
</script>
|
||||||
|
<#assign rdfUrl = individual.rdfUrl>
|
||||||
|
|
||||||
|
<#if rdfUrl??>
|
||||||
|
<script>
|
||||||
|
var individualRdfUrl = '${rdfUrl}';
|
||||||
|
</script>
|
||||||
|
</#if>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var profileTypeData = {
|
||||||
|
processingUrl: '${urls.base}/edit/primitiveRdfEdit',
|
||||||
|
individualUri: '${individual.uri!}',
|
||||||
|
defaultProfileType: '${profileType!}'
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<#if editable>
|
||||||
|
<script>
|
||||||
|
// until the web service is implemented, the bottom portion of the web page "insert"
|
||||||
|
// will not align correctly. This fixes that issue.
|
||||||
|
$('ul#individual-webpage li').children('a').each( function() {
|
||||||
|
if ( $(this).attr('title') == "link text" ) {
|
||||||
|
$('img#webpage-popout-bottom').css("margin-top","8px");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</#if>
|
||||||
|
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/individual/individual.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-vivo.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-quick-view.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css" />')}
|
||||||
|
|
||||||
|
${headScripts.add('<script type="text/javascript" src="${urls.base}/js/tiny_mce/tiny_mce.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/qtip/jquery.qtip-1.0.0-rc3.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/amplify/amplify.store.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/json2.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.truncator.js"></script>')}
|
||||||
|
|
||||||
|
${scripts.add('<script type="text/javascript" src="${urls.base}/js/individual/individualUriRdf.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualQtipBubble.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualUtils.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualProfilePageType.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/imageUpload/imageUploadUtils.js"></script>')}
|
|
@ -1,152 +1,48 @@
|
||||||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
<#-- Individual profile page template for foaf:Person individuals -->
|
<#--
|
||||||
<#include "individual-setup.ftl">
|
|
||||||
<#import "individual-qrCodeGenerator.ftl" as qr>
|
|
||||||
<#import "lib-vivo-properties.ftl" as vp>
|
|
||||||
<#if !labelCount??>
|
|
||||||
<#assign labelCount = 0 >
|
|
||||||
</#if>
|
|
||||||
<section id="individual-intro" class="vcard person" role="region">
|
|
||||||
|
|
||||||
<section id="share-contact" role="region">
|
This version of individual--foaf-person.ftl is a "router" template. The original VIVO
|
||||||
<#-- Image -->
|
version of this template now resides in the /themes/wilma/templates directory.
|
||||||
<#assign individualImage>
|
|
||||||
<@p.image individual=individual
|
|
||||||
propertyGroups=propertyGroups
|
|
||||||
namespaces=namespaces
|
|
||||||
editable=editable
|
|
||||||
showPlaceholder="always" />
|
|
||||||
</#assign>
|
|
||||||
|
|
||||||
<#if ( individualImage?contains('<img class="individual-photo"') )>
|
This version of the template is used when the profile page types feature is enabled.
|
||||||
<#assign infoClass = 'class="withThumb"'/>
|
This template serves to "rout" the user to the correct template based (1) the
|
||||||
</#if>
|
profile page type of the foaf person being displayed or (2) the targeted view that
|
||||||
|
the user wants to see. For example, when a user is routed to a quick view template,
|
||||||
|
the user has the option of displaying the full view. If the user chooses that option,
|
||||||
|
the targetedView variable gets set.
|
||||||
|
|
||||||
<div id="photo-wrapper">${individualImage}</div>
|
This template could also be used to load just the "individual--foaf-person-2column.ftl"
|
||||||
|
without enabling profile page types.
|
||||||
|
|
||||||
<nav role="navigation">
|
|
||||||
|
|
||||||
<ul id ="individual-tools-people" role="list">
|
|
||||||
<li role="listitem"><img id="uriIcon" title="${individual.uri}" class="middle" src="${urls.images}/individual/uriIcon.gif" alt="uri icon"/></li>
|
|
||||||
|
|
||||||
<@qr.renderCode />
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<#include "individual-contactInfo.ftl">
|
|
||||||
|
|
||||||
<#-- Links -->
|
|
||||||
<@vp.webpages propertyGroups editable "individual-urls-people" />
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="individual-info" ${infoClass!} role="region">
|
|
||||||
<#include "individual-visualizationFoafPerson.ftl">
|
|
||||||
|
|
||||||
<#include "individual-adminPanel.ftl">
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<#if relatedSubject??>
|
|
||||||
<h2>${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}</h2>
|
|
||||||
<p><a href="${relatedSubject.url}" title="return to">← return to ${relatedSubject.name}</a></p>
|
|
||||||
<#else>
|
|
||||||
<h1 class="vcard foaf-person">
|
|
||||||
<#-- Label -->
|
|
||||||
<span class="fn"><@p.label individual editable labelCount/></span>
|
|
||||||
|
|
||||||
<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes -->
|
|
||||||
<#assign title = propertyGroups.pullProperty("${core}preferredTitle")!>
|
|
||||||
<#if title?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
|
||||||
<@p.addLinkWithLabel title editable />
|
|
||||||
<#list title.statements as statement>
|
|
||||||
<span class="display-title">${statement.value}</span>
|
|
||||||
<@p.editingLinks "${title.name}" statement editable />
|
|
||||||
</#list>
|
|
||||||
</#if>
|
|
||||||
<#-- If preferredTitle is unpopulated, display mostSpecificTypes -->
|
|
||||||
<#if ! (title.statements)?has_content>
|
|
||||||
<@p.mostSpecificTypes individual />
|
|
||||||
</#if>
|
|
||||||
</h1>
|
|
||||||
</#if>
|
|
||||||
|
|
||||||
<#-- Positions -->
|
|
||||||
<#assign positions = propertyGroups.pullProperty("${core}personInPosition")!>
|
|
||||||
<#if positions?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
|
||||||
<@p.objectPropertyListing positions editable />
|
|
||||||
</#if>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<#-- Overview -->
|
|
||||||
<#include "individual-overview.ftl">
|
|
||||||
|
|
||||||
<#-- Research Areas -->
|
|
||||||
<#assign researchAreas = propertyGroups.pullProperty("${core}hasResearchArea")!>
|
|
||||||
<#if researchAreas?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
|
||||||
<@p.objectPropertyListing researchAreas editable />
|
|
||||||
</#if>
|
|
||||||
|
|
||||||
<#-- VIVO OpenSocial Extension by UCSF -->
|
|
||||||
<#if openSocial??>
|
|
||||||
<#if openSocial.visible>
|
|
||||||
<div id="openSocial">
|
|
||||||
<h2>OpenSocial</h2>
|
|
||||||
<#-- It would likely make sense to remove the #if logic as it is safe and -->
|
|
||||||
<#-- arguably better to just have both divs in all conditions -->
|
|
||||||
<#if editable>
|
|
||||||
<div id="gadgets-edit" class="gadgets-gadget-parent"></div>
|
|
||||||
<#else>
|
|
||||||
<div id="gadgets-view" class="gadgets-gadget-parent" ></div>
|
|
||||||
</#if>
|
|
||||||
</div>
|
|
||||||
</#if>
|
|
||||||
</#if>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<#assign nameForOtherGroup = "other"> <#-- used by both individual-propertyGroupMenu.ftl and individual-properties.ftl -->
|
|
||||||
|
|
||||||
<#-- Property group menu -->
|
|
||||||
<#-- With release 1.6 the property group is no longer used. The include statement
|
|
||||||
remains in the event a particular VIVO site still wants to use it with the new
|
|
||||||
collapsible groups.
|
|
||||||
|
|
||||||
<#include "individual-propertyGroupMenu.ftl">
|
|
||||||
-->
|
-->
|
||||||
<#-- Ontology properties -->
|
|
||||||
<#if !editable>
|
<#include "individual-setup.ftl">
|
||||||
<#-- We don't want to see the first name and last name unless we might edit them. -->
|
|
||||||
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
|
<#--
|
||||||
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
|
First, check to see if profile page types are enabled. If not, get the 2 column template:
|
||||||
|
"individual--foaf-person-2column.ftl".
|
||||||
|
|
||||||
|
NOTE: the assumption here is that if this template is being loaded, rather than the
|
||||||
|
individual--foaf-person.ftl template that resides in the theme directory, than the site
|
||||||
|
administrator wants to use 2 column template by itself or with the quick view template.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<#assign selectedTemplate = "individual--foaf-person-2column.ftl" >
|
||||||
|
|
||||||
|
|
||||||
|
<#if profilePageTypesEnabled >
|
||||||
|
<#assign profilePageType = profileType >
|
||||||
|
|
||||||
|
<#-- targetedView takes precedence over the profilePageType. -->
|
||||||
|
|
||||||
|
<#if targetedView?has_content>
|
||||||
|
<#if targetedView != "standardView">
|
||||||
|
<#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
|
||||||
</#if>
|
</#if>
|
||||||
|
<#elseif profilePageType == "quickView" >
|
||||||
<#include "individual-properties.ftl">
|
<#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
|
||||||
|
|
||||||
<#assign rdfUrl = individual.rdfUrl>
|
|
||||||
|
|
||||||
<#if rdfUrl??>
|
|
||||||
<script>
|
|
||||||
var individualRdfUrl = '${rdfUrl}';
|
|
||||||
</script>
|
|
||||||
</#if>
|
</#if>
|
||||||
<script>
|
</#if>
|
||||||
var individualLocalName = "${individual.localName}";
|
<#include selectedTemplate >
|
||||||
</script>
|
|
||||||
|
|
||||||
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/individual/individual.css" />',
|
|
||||||
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-vivo.css" />',
|
|
||||||
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-property-groups.css" />',
|
|
||||||
'<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css" />')}
|
|
||||||
|
|
||||||
${headScripts.add('<script type="text/javascript" src="${urls.base}/js/tiny_mce/tiny_mce.js"></script>',
|
|
||||||
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/qtip/jquery.qtip-1.0.0-rc3.min.js"></script>',
|
|
||||||
'<script type="text/javascript" src="${urls.base}/js/amplify/amplify.store.min.js"></script>',
|
|
||||||
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.truncator.js"></script>')}
|
|
||||||
|
|
||||||
${scripts.add('<script type="text/javascript" src="${urls.base}/js/individual/individualUtils.js"></script>',
|
|
||||||
'<script type="text/javascript" src="${urls.base}/js/individual/propertyGroupControls.js"></script>',
|
|
||||||
'<script type="text/javascript" src="${urls.base}/js/individual/individualUriRdf.js"></script>',
|
|
||||||
'<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>',
|
|
||||||
'<script type="text/javascript" src="${urls.base}/js/imageUpload/imageUploadUtils.js"></script>')}
|
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
<#assign individualProductExtension>
|
<#assign individualProductExtension>
|
||||||
<#-- Include for any class specific template additions -->
|
<#-- Include for any class specific template additions -->
|
||||||
${classSpecificExtension!}
|
${classSpecificExtension!}
|
||||||
<@vp.webpages propertyGroups editable />
|
|
||||||
<!--PREINDIVIDUAL OVERVIEW.FTL-->
|
<!--PREINDIVIDUAL OVERVIEW.FTL-->
|
||||||
|
<#include "individual-webpage.ftl">
|
||||||
<#include "individual-overview.ftl">
|
<#include "individual-overview.ftl">
|
||||||
</section> <!-- #individual-info -->
|
</section> <!-- #individual-info -->
|
||||||
</section> <!-- #individual-intro -->
|
</section> <!-- #individual-intro -->
|
||||||
|
@ -18,9 +18,7 @@
|
||||||
|
|
||||||
<#include "individual-vitro.ftl">
|
<#include "individual-vitro.ftl">
|
||||||
|
|
||||||
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/individual/individual-vivo.css" />',
|
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/individual/individual-vivo.css" />')}
|
||||||
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-property-groups.css" />')}
|
|
||||||
|
|
||||||
${headScripts.add('<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.truncator.js"></script>')}
|
${headScripts.add('<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.truncator.js"></script>')}
|
||||||
${scripts.add('<script type="text/javascript" src="${urls.base}/js/individual/individualUtils.js"></script>',
|
${scripts.add('<script type="text/javascript" src="${urls.base}/js/individual/individualUtils.js"></script>')}
|
||||||
'<script type="text/javascript" src="${urls.base}/js/individual/propertyGroupControls.js"></script>')}
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Template for admin panel on individual profile page -->
|
||||||
|
|
||||||
|
<#import "lib-form.ftl" as form>
|
||||||
|
|
||||||
|
<#if individual.showAdminPanel>
|
||||||
|
<section id="admin">
|
||||||
|
<h3 id="adminPanel">Admin Panel</h3><a class="edit-individual" href="${individual.controlPanelUrl()}" title="edit this individual">Edit this individual</a>
|
||||||
|
|
||||||
|
<section id = "verbose-mode">
|
||||||
|
<#if verbosePropertySwitch?has_content>
|
||||||
|
<#assign anchorId = "verbosePropertySwitch">
|
||||||
|
<#assign currentValue = verbosePropertySwitch.currentValue?string("on", "off")>
|
||||||
|
<#assign newValue = verbosePropertySwitch.currentValue?string("off", "on")>
|
||||||
|
<span>Verbose property display is <b>${currentValue}</b> | </span>
|
||||||
|
<a id="${anchorId}" class="verbose-toggle small" href="${verbosePropertySwitch.url}#${anchorId}" title="verbose control">Turn ${newValue}</a>
|
||||||
|
</#if>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<p class="uri-link">Resource URI: <a href="${individual.uri}" target="_blank" title="resource uri">${individual.uri}</a></p>
|
||||||
|
</section>
|
||||||
|
</#if>
|
|
@ -0,0 +1,75 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Contact info on individual profile page -->
|
||||||
|
<#assign phone = propertyGroups.pullProperty("${core}phoneNumber")!>
|
||||||
|
<#assign pEmail = propertyGroups.pullProperty("${core}primaryEmail")!>
|
||||||
|
<#assign email = propertyGroups.pullProperty("${core}email")!>
|
||||||
|
|
||||||
|
<#if editable || ( phone?has_content || pEmail?has_content || email?has_content ) >
|
||||||
|
<h2 id="contactHeading" class="mainPropGroup">Contact</h2>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#-- the layout is different in edit mode -->
|
||||||
|
<#if !editable>
|
||||||
|
<div id="contactOuterDiv">
|
||||||
|
<div id="contactEmailDiv">
|
||||||
|
</#if>
|
||||||
|
<#-- Primary Email -->
|
||||||
|
<@emailLinks "${core}primaryEmail" pEmail />
|
||||||
|
|
||||||
|
<#-- Additional Emails -->
|
||||||
|
<@emailLinks "${core}email" email />
|
||||||
|
<#if !editable>
|
||||||
|
</div> <!-- contactEmailDiv -->
|
||||||
|
<div id="contactPhoneDiv">
|
||||||
|
</#if>
|
||||||
|
<#-- Phone -->
|
||||||
|
<@phoneLinks phone />
|
||||||
|
<#if !editable>
|
||||||
|
</div> <!-- contactPhoneDiv -->
|
||||||
|
</div> <!-- contactOuterDiv -->
|
||||||
|
</#if>
|
||||||
|
<#macro phoneLinks phone>
|
||||||
|
<#if phone?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<#if editable>
|
||||||
|
<h3 id="contact">phone<@p.addLink phone editable /> </h3>
|
||||||
|
<@p.verboseDisplay phone />
|
||||||
|
</#if>
|
||||||
|
<#if phone.statements?has_content> <#-- if there are any statements -->
|
||||||
|
<ul id="phone-list" role="list">
|
||||||
|
<#list phone.statements as statement>
|
||||||
|
<li role="listitem" <#if editable>style="padding-left:10px;"</#if>>
|
||||||
|
${statement.value}
|
||||||
|
<@p.editingLinks "${phone.localName}" statement editable />
|
||||||
|
</li>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
||||||
|
<#macro emailLinks property email>
|
||||||
|
<#if property == "${core}primaryEmail">
|
||||||
|
<#local listId = "primary-email">
|
||||||
|
<#local label = "primary email">
|
||||||
|
<#else>
|
||||||
|
<#local listId = "additional-emails">
|
||||||
|
<#local label = "additional emails">
|
||||||
|
</#if>
|
||||||
|
<#if email?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<#if editable>
|
||||||
|
<h3 id="contact" class="${listId}">${label}<@p.addLink email editable label/></h3>
|
||||||
|
<@p.verboseDisplay email />
|
||||||
|
</#if>
|
||||||
|
<#if email.statements?has_content> <#-- if there are any statements -->
|
||||||
|
<ul id="${listId}" role="list">
|
||||||
|
<#list email.statements as statement>
|
||||||
|
<li role="listitem" <#if editable>style="padding-left:10px;"</#if>>
|
||||||
|
|
||||||
|
<a class="email" href="mailto:${statement.value}" title="email">${statement.value}</a>
|
||||||
|
<@p.editingLinks "${email.localName}" statement editable />
|
||||||
|
</li>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
|
@ -2,21 +2,29 @@
|
||||||
|
|
||||||
<#-- Contact info on individual profile page -->
|
<#-- Contact info on individual profile page -->
|
||||||
|
|
||||||
|
<#assign phone = propertyGroups.pullProperty("${core}phoneNumber")!>
|
||||||
|
<#assign primaryEmail = propertyGroups.pullProperty("${core}primaryEmail")!>
|
||||||
|
<#assign addlEmail = propertyGroups.pullProperty("${core}email")!>
|
||||||
|
|
||||||
|
<#if !editable && (phone?has_content || primaryEmail?has_content || addlEmail?has_content) >
|
||||||
|
<ul style="font-size:0.9em;padding-bottom:4px"><li><strong>Contact Info</strong></li></ul>
|
||||||
|
</#if>
|
||||||
|
|
||||||
<#-- Primary Email -->
|
<#-- Primary Email -->
|
||||||
<@emailLinks "${core}primaryEmail" />
|
<@emailLinks "${core}primaryEmail" primaryEmail />
|
||||||
|
|
||||||
<#-- Additional Emails -->
|
<#-- Additional Emails -->
|
||||||
<@emailLinks "${core}email" />
|
<@emailLinks "${core}email" addlEmail />
|
||||||
|
|
||||||
<#-- Phone -->
|
<#-- Phone -->
|
||||||
<#assign phone = propertyGroups.pullProperty("${core}phoneNumber")!>
|
|
||||||
<#if phone?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
<#if phone?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
<@p.addLinkWithLabel phone editable />
|
<@p.addLinkWithLabel phone editable />
|
||||||
<#if phone.statements?has_content> <#-- if there are any statements -->
|
<#if phone.statements?has_content> <#-- if there are any statements -->
|
||||||
<ul id="individual-phone" role="list">
|
<ul id="individual-phone" role="list">
|
||||||
<#list phone.statements as statement>
|
<#list phone.statements as statement>
|
||||||
<li role="listitem">
|
<li role="listitem">
|
||||||
<img class ="icon-phone middle" src="${urls.images}/individual/phoneIcon.gif" alt="phone icon" />${statement.value}
|
<#-- <img class ="icon-phone middle" src="${urls.images}/individual/phoneIcon.gif" alt="phone icon"/> -->${statement.value}
|
||||||
<@p.editingLinks "${phone.localName}" statement editable />
|
<@p.editingLinks "${phone.localName}" statement editable />
|
||||||
</li>
|
</li>
|
||||||
</#list>
|
</#list>
|
||||||
|
@ -24,8 +32,7 @@
|
||||||
</#if>
|
</#if>
|
||||||
</#if>
|
</#if>
|
||||||
|
|
||||||
<#macro emailLinks property>
|
<#macro emailLinks property email>
|
||||||
<#assign email = propertyGroups.pullProperty(property)!>
|
|
||||||
<#if property == "${core}primaryEmail">
|
<#if property == "${core}primaryEmail">
|
||||||
<#local listId = "primary-email">
|
<#local listId = "primary-email">
|
||||||
<#local label = "Primary Email">
|
<#local label = "Primary Email">
|
||||||
|
@ -39,7 +46,7 @@
|
||||||
<ul id="${listId}" class="individual-emails" role="list">
|
<ul id="${listId}" class="individual-emails" role="list">
|
||||||
<#list email.statements as statement>
|
<#list email.statements as statement>
|
||||||
<li role="listitem">
|
<li role="listitem">
|
||||||
<img class ="icon-email middle" src="${urls.images}/individual/emailIcon.gif" alt="email icon" />
|
<#-- <img class ="icon-email middle" src="${urls.images}/individual/emailIcon.gif" alt="email icon"/> -->
|
||||||
<a class="email" href="mailto:${statement.value}" title="email">${statement.value}</a>
|
<a class="email" href="mailto:${statement.value}" title="email">${statement.value}</a>
|
||||||
<@p.editingLinks "${email.localName}" statement editable />
|
<@p.editingLinks "${email.localName}" statement editable />
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Icon controls displayed in upper-right corner -->
|
||||||
|
<#-- CU directory link -->
|
||||||
|
<#assign netid = individual.selfEditingId()!>
|
||||||
|
<img id="uriIcon" title="${individual.uri}" src="${urls.images}/individual/share-uri-icon.png" alt="share the uri" />
|
||||||
|
<@qr.renderCode />
|
||||||
|
|
||||||
|
<#--
|
||||||
|
|
||||||
|
Some contact information is displayed on the profile page by default; e.g., phone numbes and email addresses. If an institution
|
||||||
|
has an additional location for contact info, such as a university directory, a third "contact" icon is available that can be used
|
||||||
|
to direct users to that directory. The <a> tag below shows an example using Cornell University's directory.
|
||||||
|
|
||||||
|
<#if netid?has_content>
|
||||||
|
<a href="http://www.cornell.edu/search/?tab=people&netid=${netid}" title="Cornell University directory entry for ${netid}" target="_blank">
|
||||||
|
<img src="${urls.images}/individual/contact-info-icon.png" title="view additional contact information" alt="contact info" />
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
-->
|
|
@ -0,0 +1,11 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- List of positions for the individual -->
|
||||||
|
<#assign positions = propertyGroups.pullProperty("${core}personInPosition")!>
|
||||||
|
<#if positions?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<#assign localName = positions.localName>
|
||||||
|
<h2 id="${localName}" class="mainPropGroup">${positions.name?capitalize} <@p.addLink positions editable /> <@p.verboseDisplay positions /></h2>
|
||||||
|
<ul id="individual-${localName}" role="list">
|
||||||
|
<@p.objectProperty positions editable />
|
||||||
|
</ul>
|
||||||
|
</#if>
|
|
@ -0,0 +1,40 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Template for property listing on individual profile page -->
|
||||||
|
|
||||||
|
<#list group.properties as property>
|
||||||
|
<article class="property" role="article">
|
||||||
|
<#-- Property display name -->
|
||||||
|
<#if property.localName == "authorInAuthorship" && editable >
|
||||||
|
<h3 id="${property.localName}">${property.name} <@p.addLink property editable /> <@p.verboseDisplay property />
|
||||||
|
<a id="managePubLink" class="manageLinks" href="${urls.base}/managePublications?subjectUri=${subjectUri[1]!}" title="manage publications" <#if verbose>style="padding-top:10px"</#if> >
|
||||||
|
manage publications
|
||||||
|
</a>
|
||||||
|
</h3>
|
||||||
|
<#elseif property.localName == "hasResearcherRole" && editable >
|
||||||
|
<h3 id="${property.localName}">${property.name} <@p.addLink property editable /> <@p.verboseDisplay property />
|
||||||
|
<a id="manageGrantLink" class="manageLinks" href="${urls.base}/manageGrants?subjectUri=${subjectUri[1]!}" title="manage grants & projects" <#if verbose>style="padding-top:10px"</#if> >
|
||||||
|
manage grants & projects
|
||||||
|
</a>
|
||||||
|
</h3>
|
||||||
|
<#elseif property.localName == "organizationForPosition" && editable >
|
||||||
|
<h3 id="${property.localName}">${property.name} <@p.addLink property editable /> <@p.verboseDisplay property />
|
||||||
|
<a id="managePeopleLink" class="manageLinks" href="${urls.base}/managePeople?subjectUri=${subjectUri[1]!}" title="manage people" <#if verbose>style="padding-top:10px"</#if> >
|
||||||
|
manage affiliated people
|
||||||
|
</a>
|
||||||
|
</h3>
|
||||||
|
<#else>
|
||||||
|
<h3 id="${property.localName}">${property.name} <@p.addLink property editable /> <@p.verboseDisplay property /> </h3>
|
||||||
|
</#if>
|
||||||
|
<#-- List the statements for each property -->
|
||||||
|
<ul class="property-list" role="list" id="${property.localName}List">
|
||||||
|
<#-- data property -->
|
||||||
|
<#if property.type == "data">
|
||||||
|
<@p.dataPropertyList property editable />
|
||||||
|
<#-- object property -->
|
||||||
|
<#else>
|
||||||
|
<@p.objectProperty property editable />
|
||||||
|
</#if>
|
||||||
|
</ul>
|
||||||
|
</article> <!-- end property -->
|
||||||
|
</#list>
|
|
@ -34,10 +34,10 @@
|
||||||
<h5 class="qrCode">vCard QR</h5>
|
<h5 class="qrCode">vCard QR</h5>
|
||||||
${qrCodeLinkedImage}
|
${qrCodeLinkedImage}
|
||||||
<#elseif (display == "icon")>
|
<#elseif (display == "icon")>
|
||||||
<li role="listitem">
|
<#-- <li role="listitem"> -->
|
||||||
<a id="qrIcon" title="vCard QR Code" href="${qrData.exportQrCodeUrl}" title="QR Code"><img class="middle" src="${urls.images}/individual/qr_icon.png" alt="qr icon" /></a>
|
<a id="qrIcon" title="vCard QR Code" href="${qrData.exportQrCodeUrl}" title="QR Code"><img src="${urls.images}/individual/qr-code-icon.png<#-- qr_icon.png -->" alt="qr icon" /></a>
|
||||||
<span id="qrCodeImage" class="hidden">${qrCodeLinkedImage} <a class="qrCloseLink" href="#" title="QR Code">Close</a></span>
|
<span id="qrCodeImage" class="hidden">${qrCodeLinkedImage} <a class="qrCloseLink" href="#" title="QR Code">Close</a></span>
|
||||||
</li>
|
<#-- </li> -->
|
||||||
<#else>
|
<#else>
|
||||||
<p class="notice">You have passed an invalid value for the qrCode display parameter.</p>
|
<p class="notice">You have passed an invalid value for the qrCode display parameter.</p>
|
||||||
</#if>
|
</#if>
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- List of research areas for the individual -->
|
||||||
|
<#assign researchAreas = propertyGroups.pullProperty("${core}hasResearchArea")!>
|
||||||
|
<#if researchAreas?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<#assign localName = researchAreas.localName>
|
||||||
|
<h2 id="${localName}" class="mainPropGroup">
|
||||||
|
${researchAreas.name?capitalize}
|
||||||
|
<img id="researchAreaIcon" src="${urls.images}/individual/research-group-icon.png" alt="research areas" />
|
||||||
|
<@p.addLink researchAreas editable /> <@p.verboseDisplay researchAreas />
|
||||||
|
</h2>
|
||||||
|
<ul id="individual-${localName}" role="list" >
|
||||||
|
<@p.objectProperty researchAreas editable />
|
||||||
|
</ul>
|
||||||
|
</#if>
|
|
@ -15,7 +15,6 @@
|
||||||
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/visualization/visualization.css" />')}
|
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/visualization/visualization.css" />')}
|
||||||
<#assign standardVisualizationURLRoot ="/visualization">
|
<#assign standardVisualizationURLRoot ="/visualization">
|
||||||
|
|
||||||
<section id="visualization" role="region">
|
|
||||||
<#if isAuthor>
|
<#if isAuthor>
|
||||||
<#assign coAuthorIcon = "${urls.images}/visualization/coauthorship/co_author_icon.png">
|
<#assign coAuthorIcon = "${urls.images}/visualization/coauthorship/co_author_icon.png">
|
||||||
<#assign mapOfScienceIcon = "${urls.images}/visualization/mapofscience/scimap_icon.png">
|
<#assign mapOfScienceIcon = "${urls.images}/visualization/mapofscience/scimap_icon.png">
|
||||||
|
@ -32,7 +31,7 @@
|
||||||
|
|
||||||
<div id="coauthorship_link_container" class="collaboratorship-link-container">
|
<div id="coauthorship_link_container" class="collaboratorship-link-container">
|
||||||
<div class="collaboratorship-icon">
|
<div class="collaboratorship-icon">
|
||||||
<a href="${coAuthorVisUrl}" title="co-author"><img src="${coAuthorIcon}" alt="Co-author network icon" width="30px" height="30px" /></a>
|
<a href="${coAuthorVisUrl}" title="co-author"><img src="${coAuthorIcon}" alt="Co-author network icon" width="25px" height="25px" /></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="collaboratorship-link"><a href="${coAuthorVisUrl}" title="co-author network">Co-Author Network</a></div>
|
<div class="collaboratorship-link"><a href="${coAuthorVisUrl}" title="co-author network">Co-Author Network</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -41,7 +40,7 @@
|
||||||
|
|
||||||
<div id="mapofscience_link_container" class="collaboratorship-link-container">
|
<div id="mapofscience_link_container" class="collaboratorship-link-container">
|
||||||
<div class="collaboratorship-icon">
|
<div class="collaboratorship-icon">
|
||||||
<a href="${mapOfScienceVisUrl}" title="map of science"><img src="${mapOfScienceIcon}" alt="Map Of Science icon" width="30px" height="30px" /></a>
|
<a href="${mapOfScienceVisUrl}" title="map of science"><img src="${mapOfScienceIcon}" alt="Map Of Science icon" width="25px" height="25px" /></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="collaboratorship-link"><a href="${mapOfScienceVisUrl}" title="map of science">Map Of Science</a></div>
|
<div class="collaboratorship-link"><a href="${mapOfScienceVisUrl}" title="map of science">Map Of Science</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -66,10 +65,9 @@
|
||||||
|
|
||||||
<div id="coinvestigator_link_container" class="collaboratorship-link-container">
|
<div id="coinvestigator_link_container" class="collaboratorship-link-container">
|
||||||
<div class="collaboratorship-icon">
|
<div class="collaboratorship-icon">
|
||||||
<a href="${coInvestigatorVisUrl}" title="co-investigator network"><img src="${coInvestigatorIcon}" alt="Co-investigator network icon" width="30px" height="30px" /></a>
|
<a href="${coInvestigatorVisUrl}" title="co-investigator network"><img src="${coInvestigatorIcon}" alt="Co-investigator network icon" width="25px" height="25px" /></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="collaboratorship-link"><a href="${coInvestigatorVisUrl}" title="co-investigator network">Co-Investigator Network</a></div>
|
<div class="collaboratorship-link"><a href="${coInvestigatorVisUrl}" title="co-investigator network">Co-Investigator Network</a></div>
|
||||||
</div>
|
</div>
|
||||||
</#if>
|
</#if>
|
||||||
</section>
|
|
||||||
</#if>
|
</#if>
|
|
@ -3,5 +3,5 @@
|
||||||
<#-- Map Of Science visualization -->
|
<#-- Map Of Science visualization -->
|
||||||
|
|
||||||
<div id="map-of-science">
|
<div id="map-of-science">
|
||||||
<h3><img src="${urls.images}/visualization/mapofscience/scimap_icon.png" width="25px" height="25px" /><a href="${individual.mapOfScienceUrl()}" title="map of science">Map of Science</a></h3>
|
<h3><img src="${urls.images}/visualization/mapofscience/scimap_icon.png" width="25" height="25"/><a href="${individual.mapOfScienceUrl()}" title="map of science">Map of Science</a></h3>
|
||||||
</div>
|
</div>
|
|
@ -0,0 +1,46 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Template for sparkline visualization on individual profile page -->
|
||||||
|
|
||||||
|
<#-- Determine whether this person is an author -->
|
||||||
|
<#assign isAuthor = p.hasStatements(propertyGroups, "${core}authorInAuthorship") />
|
||||||
|
|
||||||
|
<#-- Determine whether this person is involved in any grants -->
|
||||||
|
<#assign isInvestigator = ( p.hasStatements(propertyGroups, "${core}hasInvestigatorRole") ||
|
||||||
|
p.hasStatements(propertyGroups, "${core}hasPrincipalInvestigatorRole") ||
|
||||||
|
p.hasStatements(propertyGroups, "${core}hasCo-PrincipalInvestigatorRole") ) >
|
||||||
|
|
||||||
|
<#if (isAuthor || isInvestigator)>
|
||||||
|
|
||||||
|
<#assign standardVisualizationURLRoot ="/visualization">
|
||||||
|
<#assign coauthor = "">
|
||||||
|
<#assign coinvestigator = "">
|
||||||
|
<#assign mapofscience = "">
|
||||||
|
<h2 class="mainPropGroup">Networks</h2>
|
||||||
|
<#if isAuthor>
|
||||||
|
<#assign coAuthorIcon = "${urls.images}/visualization/coauthorship/co_author_icon.png">
|
||||||
|
<#assign mapOfScienceIcon = "${urls.images}/visualization/mapofscience/scimap_icon.png">
|
||||||
|
<#assign coAuthorVisUrl = individual.coAuthorVisUrl()>
|
||||||
|
<#assign mapOfScienceVisUrl = individual.mapOfScienceUrl()>
|
||||||
|
|
||||||
|
<#assign coauthor = "<li><a href='${coAuthorVisUrl}' title='co-author' style='vertical-align:top;'><img src='${coAuthorIcon}' alt='Co-author network icon' width='20px' height='20px' style='padding-right:8px'/></a><a href='${coAuthorVisUrl}' title='co-author network'>Co-Authors</a></li>" >
|
||||||
|
|
||||||
|
<#assign mapofscience = "<li><a href='${mapOfScienceVisUrl}' title='map of science' style='vertical-align:top;'><img src='${mapOfScienceIcon} ' alt='Map Of Science icon' width='20px' height='20px' style='padding-right:8px'/></a><a href='${mapOfScienceVisUrl}' title='map of science'>Map Of Science</a></li>" >
|
||||||
|
|
||||||
|
</#if>
|
||||||
|
<#if isInvestigator>
|
||||||
|
<#assign coInvestigatorVisUrl = individual.coInvestigatorVisUrl()>
|
||||||
|
<#assign coInvestigatorIcon = "${urls.images}/visualization/coauthorship/co_investigator_icon.png">
|
||||||
|
<#assign coinvestigator = "<li><a href='${coInvestigatorVisUrl}' title='co-investigator network' style='vertical-align:top;'><img src='${coInvestigatorIcon}' alt='Co-investigator network icon' width='20px' height='20px' style='padding-right:8px'/></a><a href='${coInvestigatorVisUrl}' title='co-investigator network'>Co-Investigators</a></li>">
|
||||||
|
</#if>
|
||||||
|
<ul id="individual-visualization">
|
||||||
|
${coauthor}
|
||||||
|
${coinvestigator}
|
||||||
|
${mapofscience}
|
||||||
|
</ul>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var visualizationUrl = '${urls.base}/visualizationAjax?uri=${individual.uri?url}';
|
||||||
|
var infoIconSrc = '${urls.images}/iconInfo.png';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</#if>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- This snippet will be included in lib-vivo-properties.ftl, so users will be able to have a
|
||||||
|
different view when extending wilma theme
|
||||||
|
|
||||||
|
<#assign webpage = propertyGroups.pullProperty("${core}webpage")!>
|
||||||
|
<@p.objectPropertyListing webpage editable />
|
||||||
|
|
||||||
|
|
||||||
|
-->
|
||||||
|
<#assign webpage = propertyGroups.pullProperty("${core}webpage")!>
|
||||||
|
<#if webpage?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<#if !editable && individual.person() >
|
||||||
|
<ul style="font-size:0.9em;padding-bottom:4px"><li><strong>Websites</strong></li></ul>
|
||||||
|
</#if>
|
||||||
|
<@p.addLinkWithLabel webpage editable "Websites"/>
|
||||||
|
<#assign localName = webpage.localName>
|
||||||
|
<ul id="individual-${localName}" class="individual-urls" role="list" <#if individual.organization() && !editable>style="font-size:1.15em"</#if>>
|
||||||
|
<@p.objectProperty webpage editable />
|
||||||
|
</ul>
|
||||||
|
</#if>
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- "Quick view" template for core:webpage
|
||||||
|
|
||||||
|
This template must be self-contained and not rely on other variables set for the individual page, because it
|
||||||
|
is also used to generate the property statement during a deletion.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<#-- *** Use of the quick view template requires that a web service provide snap shots of the web sites that ***
|
||||||
|
*** are defined on a foaf:Person individual's profile page. The web service can be one that you develop ***
|
||||||
|
*** or implement, or it can be a paid service. The service is called in the src attribute of the image ***
|
||||||
|
*** element that contains the web page snap shot, as shown below in the template. Note that this code is ***
|
||||||
|
*** currently commented out and a placeholder is displayed instead. ***
|
||||||
|
-->
|
||||||
|
|
||||||
|
<#assign count = property.statements?size!>
|
||||||
|
|
||||||
|
<#assign identifier>
|
||||||
|
<#if statement.url?has_content>
|
||||||
|
${statement.url?replace(":","")?replace("/","")?replace(".","-")?replace("&","")?replace("%","")?replace("?","")?replace("=","")}<#t>
|
||||||
|
<#else>
|
||||||
|
"noUrl"<#t>
|
||||||
|
</#if>
|
||||||
|
</#assign>
|
||||||
|
|
||||||
|
|
||||||
|
<@showWebpage statement count identifier/>
|
||||||
|
|
||||||
|
<#macro showWebpage statement count identifier>
|
||||||
|
<#local linkText>
|
||||||
|
<#if statement.anchor?has_content>${statement.anchor}<#t>
|
||||||
|
<#elseif statement.url?has_content>${statement.url}<#t>
|
||||||
|
</#if>
|
||||||
|
</#local>
|
||||||
|
<#local imgSize = "&thumbnail=true" >
|
||||||
|
|
||||||
|
<#if (statement.rank?? && statement.rank == "1") || ( count == 1 ) >
|
||||||
|
<#local imgSize = "" >
|
||||||
|
</#if>
|
||||||
|
<#if statement.url?has_content>
|
||||||
|
|
||||||
|
<#-- This section commented out until the web service for the web page snapshot is implemented.
|
||||||
|
The assumption is made that the service will require the url of the web page and possibly
|
||||||
|
an image size as well.
|
||||||
|
|
||||||
|
<span id="span-${identifier}" class="webpage-indicator-qv">Loading website image. . . <img src="${urls.images}/indicatorWhite.gif"></span>
|
||||||
|
<a title="Click to view the ${linkText} web page" href="${statement.url}">
|
||||||
|
<img id="img-${identifier}" class="org-webThumbnail" src="http://your.web.service/getsTheImage?url=${statement.url}${imgSize}" alt="screenshot of webpage ${statement.url}" style="display:none"/>
|
||||||
|
|
||||||
|
</a>
|
||||||
|
<#if imgSize == "" >
|
||||||
|
</li>
|
||||||
|
<li class="weblinkLarge">
|
||||||
|
<a title="Click to view the ${linkText} web page" href="${statement.url}">
|
||||||
|
<img id="icon-${identifier}" src="${urls.images}/individual/weblinkIconLarge.png" alt="click webpage icon" style="display:none"/>
|
||||||
|
</a>
|
||||||
|
<#else>
|
||||||
|
</li>
|
||||||
|
<li class="weblinkSmall">
|
||||||
|
<a title="Click to view the ${linkText} web page" href="${statement.url}">
|
||||||
|
<img id="icon-${identifier}" src="${urls.images}/individual/weblinkIconSmall.png" alt="click webpage icon" style="display:none"/>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
-->
|
||||||
|
<#-- Here is the placeholder link -->
|
||||||
|
<a href="${statement.url}" title="link text">${linkText}</a><script>$("a[title='link text']").parent('li').css("float","none");</script>
|
||||||
|
<#else>
|
||||||
|
<a href="${profileUrl(statement.uri("link"))}" title="link name">${statement.linkName}</a> (no url provided for link)
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
</#macro>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$('img#img-${identifier}').load(function(){
|
||||||
|
$('span#span-${identifier}').hide();
|
||||||
|
$('img#img-${identifier}').fadeIn();
|
||||||
|
$('img#icon-${identifier}').fadeIn();
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -25,10 +25,10 @@
|
||||||
|
|
||||||
<#if webpage?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
<#if webpage?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
<nav role="navigation">
|
<nav role="navigation">
|
||||||
<#local label = "Web Pages">
|
<#local label = "Websites">
|
||||||
<@p.addLinkWithLabel webpage editable label />
|
<@p.addLinkWithLabel webpage editable label />
|
||||||
<#if webpage.statements?has_content> <#-- if there are any statements -->
|
<#if webpage.statements?has_content> <#-- if there are any statements -->
|
||||||
<#include "lib-vivo-property-webpage.ftl">
|
<#include "individual-webpage.ftl" >
|
||||||
</#if>
|
</#if>
|
||||||
</nav>
|
</nav>
|
||||||
</#if>
|
</#if>
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
|
||||||
|
|
||||||
<#-- This snippet will be included in lib-vivo-properties.ftl, so users will be able to have a
|
|
||||||
different view when extending wilma theme
|
|
||||||
-->
|
|
||||||
|
|
||||||
<ul class="${linkListClass}" id="webpages" role="list">
|
|
||||||
<@p.objectPropertyList webpage editable />
|
|
||||||
</ul>
|
|
|
@ -1,5 +1,19 @@
|
||||||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#--
|
||||||
|
|
||||||
|
There are two templates for displaying publication information on foaf person pages.
|
||||||
|
|
||||||
|
- personPublicationSparklineContent.ftl
|
||||||
|
- personPublicationCountNoSparkline.ftl
|
||||||
|
|
||||||
|
The first is the template use with the Wilma theme and the individual--foaf-person.ftl
|
||||||
|
template. The second is used with the individual--foaf-person-2column.ftl template.
|
||||||
|
|
||||||
|
Update the include statement below to use the correct "sparkline" template for your
|
||||||
|
foaf person template.
|
||||||
|
|
||||||
|
-->
|
||||||
<#if shouldVIVOrenderVis>
|
<#if shouldVIVOrenderVis>
|
||||||
<#include "personPublicationSparklineContent.ftl">
|
<#include "personPublicationCountNoSparkline.ftl">
|
||||||
</#if>
|
</#if>
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
<#assign visContainerID = '${sparklineVO.visContainerDivID}'>
|
||||||
|
|
||||||
|
<#if sparklineVO.shortVisMode>
|
||||||
|
<#assign sparklineContainerID = 'pub_count_short_sparkline_vis'>
|
||||||
|
<#else>
|
||||||
|
<#assign sparklineContainerID = 'pub_count_full_sparkline_vis'>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#-- This is used to prevent collision between sparkline & visualization conatiner div ids. -->
|
||||||
|
<#if visContainerID?upper_case == sparklineContainerID?upper_case>
|
||||||
|
<#assign sparklineContainerID = visContainerID + "_spark">
|
||||||
|
</#if>
|
||||||
|
<div class="staticPageBackground">
|
||||||
|
<div id="${visContainerID}">
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
function drawPubCountVisualization() {
|
||||||
|
var unknownYearPublicationCounts = ${sparklineVO.unknownYearPublications};
|
||||||
|
var onlyUnknownYearPublications = false;
|
||||||
|
|
||||||
|
var data = new google.visualization.DataTable();
|
||||||
|
data.addColumn('string', 'Year');
|
||||||
|
data.addColumn('number', 'Publications');
|
||||||
|
data.addRows(${sparklineVO.yearToEntityCountDataTable?size});
|
||||||
|
|
||||||
|
var knownYearPublicationCounts = 0;
|
||||||
|
|
||||||
|
<#list sparklineVO.yearToEntityCountDataTable as yearToPublicationCountDataElement>
|
||||||
|
data.setValue(${yearToPublicationCountDataElement.yearToEntityCounter}, 0, '${yearToPublicationCountDataElement.year}');
|
||||||
|
data.setValue(${yearToPublicationCountDataElement.yearToEntityCounter}, 1, ${yearToPublicationCountDataElement.currentEntitiesCount});
|
||||||
|
knownYearPublicationCounts += ${yearToPublicationCountDataElement.currentEntitiesCount};
|
||||||
|
</#list>
|
||||||
|
|
||||||
|
<#-- Create a view of the data containing only the column pertaining to publication count. -->
|
||||||
|
var sparklineDataView = new google.visualization.DataView(data);
|
||||||
|
sparklineDataView.setColumns([1]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
This means that all the publications have unknown years & we do not need to display
|
||||||
|
the sparkline.
|
||||||
|
*/
|
||||||
|
if (unknownYearPublicationCounts > 0 && knownYearPublicationCounts < 1) {
|
||||||
|
|
||||||
|
onlyUnknownYearPublications = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var unknownYearPublicationCounts = ${sparklineVO.unknownYearPublications};
|
||||||
|
var totalPublicationCount = knownYearPublicationCounts + unknownYearPublicationCounts;
|
||||||
|
|
||||||
|
var shortSparkRows = sparklineDataView.getViewRows();
|
||||||
|
var renderedShortSparks = 0;
|
||||||
|
$.each(shortSparkRows, function(index, value) {
|
||||||
|
renderedShortSparks += data.getValue(value, 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
var tenYearCount = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedShortSparks;
|
||||||
|
|
||||||
|
var td1Text = totalPublicationCount;
|
||||||
|
var td2Text = "";
|
||||||
|
var infoImgText = "<img class='infoIcon' src='" + infoIconSrc + "' height='14px' width='14px' alt='information icon' title='These numbers are based solely on publications that have been loaded into this VIVO application. If this is your profile, you can enter additional publications below.' />";
|
||||||
|
|
||||||
|
if ( !onlyUnknownYearPublications ) {
|
||||||
|
if ( td1Text == tenYearCount ) {
|
||||||
|
td2Text += "in the last 10 full years " ;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
td2Text += "<strong>" + tenYearCount + "</strong> in the last 10 full years " ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( tenYearCount < 100 ) {
|
||||||
|
td2Text += infoImgText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
td2Text += "total <img class='infoIcon' src='" + infoIconSrc + "' height='14px' width='14px' alt='information icon' title='These numbers are based solely on publications that have been loaded into this VIVO application. If this is your profile, you can enter additional publications below.' />";
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#${sparklineContainerID} td#totalPubs').html(td1Text);
|
||||||
|
$('#${sparklineContainerID} td#tenYearCount').html(td2Text);
|
||||||
|
|
||||||
|
if ( td1Text > 99 && td1Text < 1000 ) {
|
||||||
|
$('#${sparklineContainerID} td#totalPubs').attr('style','font-size:1.25em');
|
||||||
|
}
|
||||||
|
else if ( td1Text > 999 ) {
|
||||||
|
$('#${sparklineContainerID} td#totalPubs').attr('style','font-size:1.1em');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
var sparklineImgTD;
|
||||||
|
|
||||||
|
|
||||||
|
if ($('#${sparklineContainerID}').length === 0) {
|
||||||
|
|
||||||
|
$('<div/>', {
|
||||||
|
'id': '${sparklineContainerID}',
|
||||||
|
}).prependTo('#${visContainerID}');
|
||||||
|
$('#${sparklineContainerID}').css('margin-top','4px').css('height','48px');
|
||||||
|
var table = $('<table>');
|
||||||
|
var row = $('<tr>');
|
||||||
|
var totalPubs = $('<td>');
|
||||||
|
totalPubs.attr('id', 'totalPubs');
|
||||||
|
totalPubs.attr('id', 'totalPubs');
|
||||||
|
var tenYearCount = $('<td>');
|
||||||
|
tenYearCount.attr('id', 'tenYearCount');
|
||||||
|
row.append(totalPubs);
|
||||||
|
row.append(tenYearCount);
|
||||||
|
table.append(row);
|
||||||
|
table.prependTo('#${sparklineContainerID}');
|
||||||
|
}
|
||||||
|
|
||||||
|
drawPubCountVisualization();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</div> <!-- Sparkline Viz -->
|
||||||
|
|
||||||
|
</div>
|
|
@ -144,18 +144,27 @@
|
||||||
which would not be mentioned in the other case because the renderedShortSparks only hold counts
|
which would not be mentioned in the other case because the renderedShortSparks only hold counts
|
||||||
of publications which have any date associated with it.
|
of publications which have any date associated with it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var totalPubs = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedShortSparks;
|
var totalPubs = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedShortSparks;
|
||||||
|
var sparksText = "";
|
||||||
|
if ( !onlyUnknownYearPublications ) {
|
||||||
|
|
||||||
$('#${sparklineContainerID} td.sparkline_number').text(totalPubs + " in the last 10 full").css("font-weight", "bold").css("font-size",".85em").attr("class", "grey");
|
$('#${sparklineContainerID} td.sparkline_number').text(totalPubs + " in the last 10 full").attr("class", "grey-text");
|
||||||
|
|
||||||
var sparksText = "years";
|
sparksText += "years";
|
||||||
|
|
||||||
if (totalPubs !== totalPublicationCount) {
|
if (totalPubs !== totalPublicationCount) {
|
||||||
sparksText += ' (' + totalPublicationCount + ' total)' ;
|
sparksText += ' (' + totalPublicationCount + ' total)' ;
|
||||||
}
|
}
|
||||||
|
|
||||||
sparksText += " <img class='infoIcon' src='" + infoIconSrc + "' height='16px' width='16px' alt='information icon' title='These numbers are based solely on publications that have been loaded into this VIVO application. If this is your profile, you can enter additional publications below.' />" ;
|
sparksText += " <img class='infoIcon' src='" + infoIconSrc + "' height='16px' width='16px' alt='information icon' title='These numbers are based solely on publications that have been loaded into this VIVO application. If this is your profile, you can enter additional publications below.' />" ;
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var totalPubs = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedSparks;
|
||||||
|
|
||||||
|
$('#${sparklineContainerID} td.sparkline_number').html(totalPubs + " total <img class='infoIcon' src='" + infoIconSrc + "' height='16px' width='16px' alt='information icon' title='These numbers are based solely on publications that have been loaded into this VIVO application. If this is your profile, you can enter additional publications below.' />").attr("class", "grey-text");
|
||||||
|
}
|
||||||
|
|
||||||
<#else>
|
<#else>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -177,7 +186,7 @@
|
||||||
var pubDisplay = "publications";
|
var pubDisplay = "publications";
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#${sparklineContainerID} td.sparkline_number').text(totalPubs).css("font-weight", "bold").attr("class", "grey").append("<span style='color: #2485AE;'> "+ pubDisplay +"<br/></span>");
|
$('#${sparklineContainerID} td.sparkline_number').text(totalPubs).attr("class", "grey-text").append("<span style='color: #2485AE;'> "+ pubDisplay +"<br/></span>");
|
||||||
|
|
||||||
var sparksText = ' from <span class="sparkline_range">${sparklineVO.earliestYearConsidered?c}'
|
var sparksText = ' from <span class="sparkline_range">${sparklineVO.earliestYearConsidered?c}'
|
||||||
+ ' to ${sparklineVO.latestRenderedPublicationYear?c}</span>';
|
+ ' to ${sparklineVO.latestRenderedPublicationYear?c}</span>';
|
||||||
|
@ -190,11 +199,11 @@
|
||||||
sparksText += ' <br /><a href="${sparklineVO.downloadDataLink}" title="csv file">(.CSV File)</a> ';
|
sparksText += ' <br /><a href="${sparklineVO.downloadDataLink}" title="csv file">(.CSV File)</a> ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</#if>
|
</#if>
|
||||||
|
|
||||||
if (!onlyUnknownYearPublications) {
|
|
||||||
$('#${sparklineContainerID} td.sparkline_text').html(sparksText);
|
$('#${sparklineContainerID} td.sparkline_text').html(sparksText);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1284,9 +1284,10 @@ img.individual-photo {
|
||||||
padding-top: .8em;
|
padding-top: .8em;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
ul#individual-tools-people {
|
div#individual-tools-people {
|
||||||
border-bottom: 1px solid #e8ece9;
|
border-bottom: 1px dotted #A6B1B0; /* #e8ece9; */
|
||||||
color: #b2d15a;
|
color: #b2d15a;
|
||||||
|
text-align:right;
|
||||||
}
|
}
|
||||||
ul#individual-tools-people li a {
|
ul#individual-tools-people li a {
|
||||||
color: #b2d15a;
|
color: #b2d15a;
|
||||||
|
@ -1306,14 +1307,6 @@ ul#individual-tools li a {
|
||||||
ul.individual-urls {
|
ul.individual-urls {
|
||||||
list-style: url(../../../images/individual/arrow-grey.gif);
|
list-style: url(../../../images/individual/arrow-grey.gif);
|
||||||
}
|
}
|
||||||
|
|
||||||
ul#individual-phone {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
ul#individual-phone li {
|
|
||||||
line-height: 1.6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.individual-urls li {
|
ul.individual-urls li {
|
||||||
font-size: .875em;
|
font-size: .875em;
|
||||||
line-height: 1.6em;
|
line-height: 1.6em;
|
||||||
|
@ -1379,7 +1372,7 @@ ul#individual-hasResearchArea li a {
|
||||||
color: #2485ae;
|
color: #2485ae;
|
||||||
}
|
}
|
||||||
/* INDIVIDUAL VISUALIZATION ------> */
|
/* INDIVIDUAL VISUALIZATION ------> */
|
||||||
#visualization h3 {
|
#right-hand-column h3 {
|
||||||
font-size: 1.25em;
|
font-size: 1.25em;
|
||||||
color: #2485ae;
|
color: #2485ae;
|
||||||
}
|
}
|
||||||
|
@ -1395,12 +1388,14 @@ a.all-vivo-publications {
|
||||||
color: #2485AE;
|
color: #2485AE;
|
||||||
font-size: .8em !important;
|
font-size: .8em !important;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
vertical-align:text-top;
|
||||||
}
|
}
|
||||||
/* <------ MAP O' SCIENCE */
|
/* <------ MAP O' SCIENCE */
|
||||||
#map-of-science h3 a {
|
#map-of-science h3 a {
|
||||||
color: #2485AE;
|
color: #2485AE;
|
||||||
font-size: .8em !important;
|
font-size: .8em !important;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
vertical-align:text-top;
|
||||||
}
|
}
|
||||||
/* COAUTHORS ------> */
|
/* COAUTHORS ------> */
|
||||||
img.co-author {
|
img.co-author {
|
||||||
|
|
133
themes/wilma/templates/individual--foaf-person.ftl
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#--
|
||||||
|
Individual profile page template for foaf:Person individuals. This is the default template for foaf persons
|
||||||
|
in the Wilma theme and should reside in the themes/wilma/templates directory.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<#include "individual-setup.ftl">
|
||||||
|
<#import "individual-qrCodeGenerator.ftl" as qr>
|
||||||
|
<#import "lib-vivo-properties.ftl" as vp>
|
||||||
|
<#if !labelCount??>
|
||||||
|
<#assign labelCount = 0 >
|
||||||
|
</#if>
|
||||||
|
<section id="individual-intro" class="vcard person" role="region">
|
||||||
|
|
||||||
|
<section id="share-contact" role="region">
|
||||||
|
<!-- Image -->
|
||||||
|
<#assign individualImage>
|
||||||
|
<@p.image individual=individual
|
||||||
|
propertyGroups=propertyGroups
|
||||||
|
namespaces=namespaces
|
||||||
|
editable=editable
|
||||||
|
showPlaceholder="always" />
|
||||||
|
</#assign>
|
||||||
|
|
||||||
|
<#if ( individualImage?contains('<img class="individual-photo"') )>
|
||||||
|
<#assign infoClass = 'class="withThumb"'/>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<div id="photo-wrapper">${individualImage}</div>
|
||||||
|
<!-- Contact Info -->
|
||||||
|
<#include "individual-contactInfo.ftl">
|
||||||
|
|
||||||
|
<!-- Websites -->
|
||||||
|
<#include "individual-webpage.ftl">
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="individual-info" ${infoClass!} role="region">
|
||||||
|
<section id="right-hand-column" role="region">
|
||||||
|
<div id="individual-tools-people">
|
||||||
|
<img id="uriIcon" title="${individual.uri}" src="${urls.images}/individual/share-uri-icon.png" alt="uri icon"/>
|
||||||
|
<@qr.renderCode />
|
||||||
|
</div>
|
||||||
|
<#include "individual-visualizationFoafPerson.ftl">
|
||||||
|
</section>
|
||||||
|
<#include "individual-adminPanel.ftl">
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<#if relatedSubject??>
|
||||||
|
<h2>${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}</h2>
|
||||||
|
<p><a href="${relatedSubject.url}" title="return to">← return to ${relatedSubject.name}</a></p>
|
||||||
|
<#else>
|
||||||
|
<h1 class="vcard foaf-person">
|
||||||
|
<#-- Label -->
|
||||||
|
<span class="fn"><@p.label individual editable labelCount/></span>
|
||||||
|
|
||||||
|
<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes -->
|
||||||
|
<#assign title = propertyGroups.pullProperty("${core}preferredTitle")!>
|
||||||
|
<#if title?has_content> <#-- true when the property is in the list, even if not populated (when editing) -->
|
||||||
|
<@p.addLinkWithLabel title editable />
|
||||||
|
<#list title.statements as statement>
|
||||||
|
<span class="display-title">${statement.value}</span>
|
||||||
|
<@p.editingLinks "${title.name}" statement editable />
|
||||||
|
</#list>
|
||||||
|
</#if>
|
||||||
|
<#-- If preferredTitle is unpopulated, display mostSpecificTypes -->
|
||||||
|
<#if ! (title.statements)?has_content>
|
||||||
|
<@p.mostSpecificTypes individual />
|
||||||
|
</#if>
|
||||||
|
</h1>
|
||||||
|
</#if>
|
||||||
|
<!-- Positions -->
|
||||||
|
<#include "individual-positions.ftl">
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- Overview -->
|
||||||
|
<#include "individual-overview.ftl">
|
||||||
|
|
||||||
|
<!-- Research Areas -->
|
||||||
|
<#include "individual-researchAreas.ftl">
|
||||||
|
|
||||||
|
<#include "individual-openSocial.ftl">
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<#assign nameForOtherGroup = "other"> <#-- used by both individual-propertyGroupMenu.ftl and individual-properties.ftl -->
|
||||||
|
|
||||||
|
<#-- Ontology properties -->
|
||||||
|
<#if !editable>
|
||||||
|
<#-- We don't want to see the first name and last name unless we might edit them. -->
|
||||||
|
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
|
||||||
|
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<!-- Property group menu or tabs -->
|
||||||
|
<#--
|
||||||
|
With release 1.6 there are now two types of property group displays: the original property group
|
||||||
|
menu and the horizontal tab display, which is the default. If you prefer to use the property
|
||||||
|
group menu, simply substitute the include statement below with the one that appears after this
|
||||||
|
comment section.
|
||||||
|
|
||||||
|
<#include "individual-property-group-menus.ftl">
|
||||||
|
-->
|
||||||
|
|
||||||
|
<#include "individual-property-group-tabs.ftl">
|
||||||
|
|
||||||
|
<#assign rdfUrl = individual.rdfUrl>
|
||||||
|
|
||||||
|
<#if rdfUrl??>
|
||||||
|
<script>
|
||||||
|
var individualRdfUrl = '${rdfUrl}';
|
||||||
|
</script>
|
||||||
|
</#if>
|
||||||
|
<script>
|
||||||
|
var individualLocalName = "${individual.localName}";
|
||||||
|
var imagesPath = '${urls.images}';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/individual/individual.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/css/individual/individual-vivo.css" />',
|
||||||
|
'<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css" />')}
|
||||||
|
|
||||||
|
${headScripts.add('<script type="text/javascript" src="${urls.base}/js/tiny_mce/tiny_mce.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/qtip/jquery.qtip-1.0.0-rc3.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.truncator.js"></script>')}
|
||||||
|
|
||||||
|
${scripts.add('<script type="text/javascript" src="${urls.base}/js/individual/individualUtils.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualQtipBubble.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/individual/individualUriRdf.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>',
|
||||||
|
'<script type="text/javascript" src="${urls.base}/js/imageUpload/imageUploadUtils.js"></script>')}
|
||||||
|
|
18
themes/wilma/templates/individual-openSocial.ftl
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Open Social Gadgets -->
|
||||||
|
<#-- VIVO OpenSocial Extension by UCSF -->
|
||||||
|
<#if openSocial??>
|
||||||
|
<#if openSocial.visible>
|
||||||
|
<div id="openSocial">
|
||||||
|
<h2>OpenSocial</h2>
|
||||||
|
<#-- It would likely make sense to remove the #if logic as it is safe and -->
|
||||||
|
<#-- arguably better to just have both divs in all conditions -->
|
||||||
|
<#if editable>
|
||||||
|
<div id="gadgets-edit" class="gadgets-gadget-parent"></div>
|
||||||
|
<#else>
|
||||||
|
<div id="gadgets-view" class="gadgets-gadget-parent" ></div>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</#if>
|