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
|
||||
#
|
||||
#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 {
|
||||
clear: both;
|
||||
list-style-type: circle;
|
||||
margin-left: 15px;
|
||||
}
|
||||
ul#individual-phone li {
|
||||
font-size: .875em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
ul#individual-phone li:last-child {
|
||||
margin-bottom: 10px;
|
||||
|
@ -25,26 +27,35 @@ ul#individual-phone li:first-child {
|
|||
margin-top: 10px;
|
||||
}
|
||||
.icon-phone, .icon-email {
|
||||
padding-right: 5px;
|
||||
padding-right: 2px;
|
||||
}
|
||||
#individual-intro ul.individual-urls {
|
||||
list-style-type: circle;
|
||||
margin-left: 20px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
#individual-intro ul.individual-urls li {
|
||||
font-size: .875em;
|
||||
line-height: 1.7em;
|
||||
line-height: 1.5em;
|
||||
padding-bottom:5px;
|
||||
}
|
||||
ul.individual-emails {
|
||||
clear: both;
|
||||
padding-left: 0;
|
||||
list-style-type: circle;
|
||||
margin-left: 20px;
|
||||
}
|
||||
#additional-emails li:last-child {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
ul.individual-emails li {
|
||||
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{
|
||||
margin-bottom: 5px;
|
||||
|
@ -83,11 +94,9 @@ ul#additional-emails li {
|
|||
width: 100%;
|
||||
float: none;
|
||||
}
|
||||
ul#individual-tools-people {
|
||||
margin-top: 5px;
|
||||
div#individual-tools-people {
|
||||
height: 20px;
|
||||
padding-bottom: 20px;
|
||||
list-style-type: none;
|
||||
padding-bottom: 24px;
|
||||
clear: both;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
@ -126,12 +135,12 @@ div.overview-value :last-child {
|
|||
width: 100%;
|
||||
}
|
||||
/* <------ INDIVIDUAL VISUALIZATION */
|
||||
#visualization {
|
||||
#right-hand-column {
|
||||
padding: 0 0 0 20px;
|
||||
float: right;
|
||||
background-color: #fff;
|
||||
}
|
||||
#visualization h3 {
|
||||
#right-hand-column h3 {
|
||||
padding-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
@ -231,7 +240,7 @@ a.qrCloseLink {
|
|||
}
|
||||
/* MISCELLANEOUS------> */
|
||||
.listDateTime {
|
||||
padding: 0.2em 0.4em;
|
||||
padding: 0 0.4em;
|
||||
font-size: 0.8em;
|
||||
background: #f4f4f4;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ span.incomplete-data-holder,
|
|||
}
|
||||
.collaboratorship-icon {
|
||||
float: left;
|
||||
padding-right: 5px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
.collaboratorship-link a {
|
||||
font-size: 0.9em;
|
||||
|
@ -48,12 +48,12 @@ span.incomplete-data-holder,
|
|||
border-top: 1px dotted #A6B1B0;
|
||||
padding-top: 20px;
|
||||
}
|
||||
.sparkline_text {
|
||||
font-size: .8em;
|
||||
font-weight: bold;
|
||||
.sparkline_text, .grey-text {
|
||||
font-size: .9em;
|
||||
text-align: left;
|
||||
line-height: 1.5em;
|
||||
width: 180px;
|
||||
color: #5e6363;
|
||||
}
|
||||
.google-visualization-sparkline-default {
|
||||
margin-bottom: 5px;
|
||||
|
@ -80,6 +80,7 @@ span.incomplete-data-holder,
|
|||
.infoIcon {
|
||||
padding-right:30px;
|
||||
}
|
||||
|
||||
/* ---------------------------*/
|
||||
/* 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
|
||||
// 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 ( $('div#webpagesContainer').length ) {
|
||||
$('div#webpagesContainer').css('width', '100%').css('clear','both');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<#-- Do not show the link for temporal visualization unless it's enabled -->
|
||||
<#if temporalVisualizationEnabled>
|
||||
<#assign classSpecificExtension>
|
||||
<section id="visualization" role="region">
|
||||
<section id="right-hand-column" role="region">
|
||||
<#include "individual-visualizationTemporalGraph.ftl">
|
||||
<#include "individual-visualizationMapOfScience.ftl">
|
||||
</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$ -->
|
||||
|
||||
<#-- 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">
|
||||
<#-- Image -->
|
||||
<#assign individualImage>
|
||||
<@p.image individual=individual
|
||||
propertyGroups=propertyGroups
|
||||
namespaces=namespaces
|
||||
editable=editable
|
||||
showPlaceholder="always" />
|
||||
</#assign>
|
||||
This version of individual--foaf-person.ftl is a "router" template. The original VIVO
|
||||
version of this template now resides in the /themes/wilma/templates directory.
|
||||
|
||||
<#if ( individualImage?contains('<img class="individual-photo"') )>
|
||||
<#assign infoClass = 'class="withThumb"'/>
|
||||
</#if>
|
||||
This version of the template is used when the profile page types feature is enabled.
|
||||
This template serves to "rout" the user to the correct template based (1) the
|
||||
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>
|
||||
<#-- 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")!>
|
||||
|
||||
<#include "individual-setup.ftl">
|
||||
|
||||
<#--
|
||||
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>
|
||||
|
||||
<#include "individual-properties.ftl">
|
||||
|
||||
<#assign rdfUrl = individual.rdfUrl>
|
||||
|
||||
<#if rdfUrl??>
|
||||
<script>
|
||||
var individualRdfUrl = '${rdfUrl}';
|
||||
</script>
|
||||
<#elseif profilePageType == "quickView" >
|
||||
<#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
|
||||
</#if>
|
||||
<script>
|
||||
var individualLocalName = "${individual.localName}";
|
||||
</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>')}
|
||||
</#if>
|
||||
<#include selectedTemplate >
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
<#assign individualProductExtension>
|
||||
<#-- Include for any class specific template additions -->
|
||||
${classSpecificExtension!}
|
||||
<@vp.webpages propertyGroups editable />
|
||||
<!--PREINDIVIDUAL OVERVIEW.FTL-->
|
||||
<#include "individual-webpage.ftl">
|
||||
<#include "individual-overview.ftl">
|
||||
</section> <!-- #individual-info -->
|
||||
</section> <!-- #individual-intro -->
|
||||
|
@ -18,9 +18,7 @@
|
|||
|
||||
<#include "individual-vitro.ftl">
|
||||
|
||||
${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" />')}
|
||||
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/individual/individual-vivo.css" />')}
|
||||
|
||||
${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>',
|
||||
'<script type="text/javascript" src="${urls.base}/js/individual/propertyGroupControls.js"></script>')}
|
||||
${scripts.add('<script type="text/javascript" src="${urls.base}/js/individual/individualUtils.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 -->
|
||||
|
||||
<#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 -->
|
||||
<@emailLinks "${core}primaryEmail" />
|
||||
<@emailLinks "${core}primaryEmail" primaryEmail />
|
||||
|
||||
<#-- Additional Emails -->
|
||||
<@emailLinks "${core}email" />
|
||||
<@emailLinks "${core}email" addlEmail />
|
||||
|
||||
<#-- 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) -->
|
||||
<@p.addLinkWithLabel phone editable />
|
||||
<#if phone.statements?has_content> <#-- if there are any statements -->
|
||||
<ul id="individual-phone" role="list">
|
||||
<#list phone.statements as statement>
|
||||
<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 />
|
||||
</li>
|
||||
</#list>
|
||||
|
@ -24,8 +32,7 @@
|
|||
</#if>
|
||||
</#if>
|
||||
|
||||
<#macro emailLinks property>
|
||||
<#assign email = propertyGroups.pullProperty(property)!>
|
||||
<#macro emailLinks property email>
|
||||
<#if property == "${core}primaryEmail">
|
||||
<#local listId = "primary-email">
|
||||
<#local label = "Primary Email">
|
||||
|
@ -39,7 +46,7 @@
|
|||
<ul id="${listId}" class="individual-emails" role="list">
|
||||
<#list email.statements as statement>
|
||||
<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>
|
||||
<@p.editingLinks "${email.localName}" statement editable />
|
||||
</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>
|
||||
${qrCodeLinkedImage}
|
||||
<#elseif (display == "icon")>
|
||||
<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>
|
||||
<#-- <li role="listitem"> -->
|
||||
<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>
|
||||
</li>
|
||||
<#-- </li> -->
|
||||
<#else>
|
||||
<p class="notice">You have passed an invalid value for the qrCode display parameter.</p>
|
||||
</#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" />')}
|
||||
<#assign standardVisualizationURLRoot ="/visualization">
|
||||
|
||||
<section id="visualization" role="region">
|
||||
<#if isAuthor>
|
||||
<#assign coAuthorIcon = "${urls.images}/visualization/coauthorship/co_author_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 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 class="collaboratorship-link"><a href="${coAuthorVisUrl}" title="co-author network">Co-Author Network</a></div>
|
||||
</div>
|
||||
|
@ -41,7 +40,7 @@
|
|||
|
||||
<div id="mapofscience_link_container" class="collaboratorship-link-container">
|
||||
<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 class="collaboratorship-link"><a href="${mapOfScienceVisUrl}" title="map of science">Map Of Science</a></div>
|
||||
</div>
|
||||
|
@ -66,10 +65,9 @@
|
|||
|
||||
<div id="coinvestigator_link_container" class="collaboratorship-link-container">
|
||||
<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 class="collaboratorship-link"><a href="${coInvestigatorVisUrl}" title="co-investigator network">Co-Investigator Network</a></div>
|
||||
</div>
|
||||
</#if>
|
||||
</section>
|
||||
</#if>
|
|
@ -3,5 +3,5 @@
|
|||
<#-- Map Of Science visualization -->
|
||||
|
||||
<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>
|
|
@ -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) -->
|
||||
<nav role="navigation">
|
||||
<#local label = "Web Pages">
|
||||
<#local label = "Websites">
|
||||
<@p.addLinkWithLabel webpage editable label />
|
||||
<#if webpage.statements?has_content> <#-- if there are any statements -->
|
||||
<#include "lib-vivo-property-webpage.ftl">
|
||||
<#include "individual-webpage.ftl" >
|
||||
</#if>
|
||||
</nav>
|
||||
</#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$ -->
|
||||
|
||||
<#--
|
||||
|
||||
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>
|
||||
<#include "personPublicationSparklineContent.ftl">
|
||||
<#include "personPublicationCountNoSparkline.ftl">
|
||||
</#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
|
||||
of publications which have any date associated with it.
|
||||
*/
|
||||
|
||||
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) {
|
||||
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.' />" ;
|
||||
|
||||
}
|
||||
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>
|
||||
|
||||
/*
|
||||
|
@ -177,7 +186,7 @@
|
|||
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}'
|
||||
+ ' to ${sparklineVO.latestRenderedPublicationYear?c}</span>';
|
||||
|
@ -190,11 +199,11 @@
|
|||
sparksText += ' <br /><a href="${sparklineVO.downloadDataLink}" title="csv file">(.CSV File)</a> ';
|
||||
}
|
||||
|
||||
|
||||
</#if>
|
||||
|
||||
if (!onlyUnknownYearPublications) {
|
||||
$('#${sparklineContainerID} td.sparkline_text').html(sparksText);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1284,9 +1284,10 @@ img.individual-photo {
|
|||
padding-top: .8em;
|
||||
display: block;
|
||||
}
|
||||
ul#individual-tools-people {
|
||||
border-bottom: 1px solid #e8ece9;
|
||||
div#individual-tools-people {
|
||||
border-bottom: 1px dotted #A6B1B0; /* #e8ece9; */
|
||||
color: #b2d15a;
|
||||
text-align:right;
|
||||
}
|
||||
ul#individual-tools-people li a {
|
||||
color: #b2d15a;
|
||||
|
@ -1306,14 +1307,6 @@ ul#individual-tools li a {
|
|||
ul.individual-urls {
|
||||
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 {
|
||||
font-size: .875em;
|
||||
line-height: 1.6em;
|
||||
|
@ -1379,7 +1372,7 @@ ul#individual-hasResearchArea li a {
|
|||
color: #2485ae;
|
||||
}
|
||||
/* INDIVIDUAL VISUALIZATION ------> */
|
||||
#visualization h3 {
|
||||
#right-hand-column h3 {
|
||||
font-size: 1.25em;
|
||||
color: #2485ae;
|
||||
}
|
||||
|
@ -1395,12 +1388,14 @@ a.all-vivo-publications {
|
|||
color: #2485AE;
|
||||
font-size: .8em !important;
|
||||
text-decoration: underline;
|
||||
vertical-align:text-top;
|
||||
}
|
||||
/* <------ MAP O' SCIENCE */
|
||||
#map-of-science h3 a {
|
||||
color: #2485AE;
|
||||
font-size: .8em !important;
|
||||
text-decoration: underline;
|
||||
vertical-align:text-top;
|
||||
}
|
||||
/* COAUTHORS ------> */
|
||||
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>
|