From 9cde935cc7d27ef2183671ef7fbaf740f13e0248 Mon Sep 17 00:00:00 2001 From: tworrall Date: Thu, 31 Jan 2013 11:15:48 -0500 Subject: [PATCH] multiple updates and new files to support multiple foaf person profile pages --- example.runtime.properties | 6 + productMods/css/individual/ie7-quick-view.css | 32 ++ .../css/individual/ie7-standard-view.css | 36 +++ .../individual/individual-2column-view.css | 297 ++++++++++++++++++ .../css/individual/individual-quick-view.css | 257 +++++++++++++++ .../css/individual/individual-vivo.css | 31 +- .../css/visualization/visualization.css | 9 +- .../images/individual/contact-info-icon.png | Bin 0 -> 677 bytes .../images/individual/fullViewBubble.png | Bin 0 -> 5810 bytes .../images/individual/fullViewIcon.png | Bin 0 -> 4128 bytes .../images/individual/pub-total-bkgrnd.png | Bin 0 -> 4154 bytes .../images/individual/qr-code-icon.png | Bin 0 -> 764 bytes .../images/individual/quickViewBubble.png | Bin 0 -> 5654 bytes .../images/individual/quickViewIcon.png | Bin 0 -> 3916 bytes .../images/individual/research-group-icon.png | Bin 0 -> 790 bytes .../images/individual/researchAreaBubble.png | Bin 0 -> 5481 bytes .../images/individual/share-uri-icon.png | Bin 0 -> 1160 bytes .../images/individual/weblinkIconLarge.png | Bin 0 -> 3078 bytes .../images/individual/weblinkIconSmall.png | Bin 0 -> 2237 bytes .../individual/webpage-popout-bottom.png | Bin 0 -> 3355 bytes .../images/individual/webpage-popout-top.png | Bin 0 -> 4920 bytes .../individual/individualProfilePageType.js | 78 +++++ .../js/individual/individualQtipBubble.js | 119 +++++++ productMods/js/individual/individualUtils.js | 6 +- .../individual--foaf-organization.ftl | 2 +- .../individual--foaf-person-2column.ftl | 174 ++++++++++ .../individual--foaf-person-quickview.ftl | 232 ++++++++++++++ .../individual/individual--foaf-person.ftl | 184 +++-------- .../freemarker/body/individual/individual.ftl | 8 +- .../individual/individual-adminPanel.ftl | 23 ++ .../individual-contactInfo-2column.ftl | 75 +++++ .../individual/individual-contactInfo.ftl | 23 +- .../individual/individual-iconControls.ftl | 21 ++ .../individual/individual-positions.ftl | 11 + .../individual/individual-properties.ftl | 40 +++ .../individual/individual-qrCodeGenerator.ftl | 6 +- .../individual/individual-researchAreas.ftl | 15 + .../individual-visualizationFoafPerson.ftl | 10 +- .../individual-visualizationMapOfScience.ftl | 2 +- .../individual-visualizationQuickView.ftl | 46 +++ .../individual/individual-webpage.ftl | 22 ++ .../propStatement-webpage-quickview.ftl | 80 +++++ .../freemarker/lib/lib-vivo-properties.ftl | 4 +- .../lib/lib-vivo-property-webpage.ftl | 9 - ...personPublicationCountDynamicActivator.ftl | 16 +- .../personPublicationCountNoSparkline.ftl | 121 +++++++ .../personPublicationSparklineContent.ftl | 91 +++--- themes/wilma/css/wilma.css | 17 +- .../templates/individual--foaf-person.ftl | 133 ++++++++ .../wilma/templates/individual-openSocial.ftl | 18 ++ 50 files changed, 2005 insertions(+), 249 deletions(-) create mode 100644 productMods/css/individual/ie7-quick-view.css create mode 100644 productMods/css/individual/ie7-standard-view.css create mode 100644 productMods/css/individual/individual-2column-view.css create mode 100644 productMods/css/individual/individual-quick-view.css create mode 100644 productMods/images/individual/contact-info-icon.png create mode 100644 productMods/images/individual/fullViewBubble.png create mode 100644 productMods/images/individual/fullViewIcon.png create mode 100644 productMods/images/individual/pub-total-bkgrnd.png create mode 100644 productMods/images/individual/qr-code-icon.png create mode 100644 productMods/images/individual/quickViewBubble.png create mode 100644 productMods/images/individual/quickViewIcon.png create mode 100644 productMods/images/individual/research-group-icon.png create mode 100644 productMods/images/individual/researchAreaBubble.png create mode 100644 productMods/images/individual/share-uri-icon.png create mode 100644 productMods/images/individual/weblinkIconLarge.png create mode 100644 productMods/images/individual/weblinkIconSmall.png create mode 100644 productMods/images/individual/webpage-popout-bottom.png create mode 100644 productMods/images/individual/webpage-popout-top.png create mode 100644 productMods/js/individual/individualProfilePageType.js create mode 100644 productMods/js/individual/individualQtipBubble.js create mode 100644 productMods/templates/freemarker/body/individual/individual--foaf-person-2column.ftl create mode 100644 productMods/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-adminPanel.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-contactInfo-2column.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-iconControls.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-positions.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-properties.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-visualizationQuickView.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/individual-webpage.ftl create mode 100644 productMods/templates/freemarker/body/partials/individual/propStatement-webpage-quickview.ftl delete mode 100644 productMods/templates/freemarker/lib/lib-vivo-property-webpage.ftl create mode 100644 productMods/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl create mode 100644 themes/wilma/templates/individual--foaf-person.ftl create mode 100644 themes/wilma/templates/individual-openSocial.ftl diff --git a/example.runtime.properties b/example.runtime.properties index edb02720..d28b7bd7 100644 --- a/example.runtime.properties +++ b/example.runtime.properties @@ -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 diff --git a/productMods/css/individual/ie7-quick-view.css b/productMods/css/individual/ie7-quick-view.css new file mode 100644 index 00000000..75472b4d --- /dev/null +++ b/productMods/css/individual/ie7-quick-view.css @@ -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; +} diff --git a/productMods/css/individual/ie7-standard-view.css b/productMods/css/individual/ie7-standard-view.css new file mode 100644 index 00000000..37986a09 --- /dev/null +++ b/productMods/css/individual/ie7-standard-view.css @@ -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; +} \ No newline at end of file diff --git a/productMods/css/individual/individual-2column-view.css b/productMods/css/individual/individual-2column-view.css new file mode 100644 index 00000000..3ddea1d3 --- /dev/null +++ b/productMods/css/individual/individual-2column-view.css @@ -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; +} diff --git a/productMods/css/individual/individual-quick-view.css b/productMods/css/individual/individual-quick-view.css new file mode 100644 index 00000000..c23c5d33 --- /dev/null +++ b/productMods/css/individual/individual-quick-view.css @@ -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 */ +} diff --git a/productMods/css/individual/individual-vivo.css b/productMods/css/individual/individual-vivo.css index 10a243c6..d21bac20 100644 --- a/productMods/css/individual/individual-vivo.css +++ b/productMods/css/individual/individual-vivo.css @@ -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; } diff --git a/productMods/css/visualization/visualization.css b/productMods/css/visualization/visualization.css index ee1097bb..4e891051 100644 --- a/productMods/css/visualization/visualization.css +++ b/productMods/css/visualization/visualization.css @@ -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 -------*/ /* ---------------------------*/ diff --git a/productMods/images/individual/contact-info-icon.png b/productMods/images/individual/contact-info-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4e1372b1077433d581c095523be25f377b451b8c GIT binary patch literal 677 zcmV;W0$TlvP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RX3Ih)!I-AcK6aWAMH%UZ6R7l6Y zmc4J)(;BbC--IQ|FpCY)~ui zgdvL^sgR~3X@TMoHFk#}Kn~C|SbesWe7}3|?)5!S$aP&h;xoE?(CAnEs+C#&H#fmaiQOJt<97B;ct6%yf z1Mn1&FfaF>`Q=a*NQJDsdFyX2z9&c9!y%d5WMi^8e>$8{f>w(S>Sj^{Q5jrStl%d6ZZv3b+6j>H`gF^3%g}5sW+Czf{mvP&B+mT1|9^200000 LNkvXXu0mjfEs!^z literal 0 HcmV?d00001 diff --git a/productMods/images/individual/fullViewBubble.png b/productMods/images/individual/fullViewBubble.png new file mode 100644 index 0000000000000000000000000000000000000000..c42ce400b8c57844361fb54792e8ceb2711d0d63 GIT binary patch literal 5810 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 Eg3<&ZJOBUy literal 0 HcmV?d00001 diff --git a/productMods/images/individual/qr-code-icon.png b/productMods/images/individual/qr-code-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..af954b1932c694a978c4673f1196449d359d06be GIT binary patch literal 764 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 literal 0 HcmV?d00001 diff --git a/productMods/images/individual/quickViewIcon.png b/productMods/images/individual/quickViewIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b1b65b052a18c5a13d7bdaa1bd3e4f5e3cd1a5 GIT binary patch literal 3916 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 literal 0 HcmV?d00001 diff --git a/productMods/images/individual/share-uri-icon.png b/productMods/images/individual/share-uri-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a79edd97b30a571115154c5bd3ef17799e0f7a07 GIT binary patch literal 1160 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 literal 0 HcmV?d00001 diff --git a/productMods/images/individual/webpage-popout-top.png b/productMods/images/individual/webpage-popout-top.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b1ff8ce23c8adb79a6d984a77d932227583a57 GIT binary patch literal 4920 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 " + + " ."; + + if ( profilePageType.defaultProfileType != "none" ) { + retract = "<" + profilePageType.individualUri + "> " + + " ."; + } + + $.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(); +}); diff --git a/productMods/js/individual/individualQtipBubble.js b/productMods/js/individual/individualQtipBubble.js new file mode 100644 index 00000000..5b56c814 --- /dev/null +++ b/productMods/js/individual/individualQtipBubble.js @@ -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' + } + }); + }); +}); \ No newline at end of file diff --git a/productMods/js/individual/individualUtils.js b/productMods/js/individual/individualUtils.js index 8cfcc787..a1226c60 100644 --- a/productMods/js/individual/individualUtils.js +++ b/productMods/js/individual/individualUtils.js @@ -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 ) { - $('div#webpagesContainer').css('width', '100%').css('clear','both'); + if ( $('div#webpagesContainer').length ) { + $('div#webpagesContainer').css('width', '100%').css('clear','both'); + } } }); diff --git a/productMods/templates/freemarker/body/individual/individual--foaf-organization.ftl b/productMods/templates/freemarker/body/individual/individual--foaf-organization.ftl index 56ee0069..851699e7 100644 --- a/productMods/templates/freemarker/body/individual/individual--foaf-organization.ftl +++ b/productMods/templates/freemarker/body/individual/individual--foaf-organization.ftl @@ -5,7 +5,7 @@ <#-- Do not show the link for temporal visualization unless it's enabled --> <#if temporalVisualizationEnabled> <#assign classSpecificExtension> -
+
<#include "individual-visualizationTemporalGraph.ftl"> <#include "individual-visualizationMapOfScience.ftl">
diff --git a/productMods/templates/freemarker/body/individual/individual--foaf-person-2column.ftl b/productMods/templates/freemarker/body/individual/individual--foaf-person-2column.ftl new file mode 100644 index 00000000..f7413087 --- /dev/null +++ b/productMods/templates/freemarker/body/individual/individual--foaf-person-2column.ftl @@ -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 --> + +<#-- <#include "individual-setup.ftl"> --> +<#import "individual-qrCodeGenerator.ftl" as qr> +<#import "lib-vivo-properties.ftl" as vp> +<#if !labelCount??> + <#assign labelCount = 0 > + +
+
+ <#-- Image --> + <#assign individualImage> + <@p.image individual=individual + propertyGroups=propertyGroups + namespaces=namespaces + editable=editable + showPlaceholder="always" /> + + + <#if ( individualImage?contains(' + <#assign infoClass = 'class="withThumb"'/> + + +
${individualImage}
+ + <#include "individual-visualizationFoafPerson.ftl"> +
+
+ <#include "individual-adminPanel.ftl"> +
+ <#if relatedSubject??> +

${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}

+

← return to ${relatedSubject.name}

+ <#else> +

style="float:left;border-right:1px solid #A6B1B0;"> + <#-- Label --> + <@p.label individual editable labelCount/> +

+ <#-- 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 > +
${statement.value}
+ <#else> + ${statement.value} + <@p.editingLinks "${title.name}" statement editable /> + + + + <#-- If preferredTitle is unpopulated, display mostSpecificTypes --> + <#if ! (title.statements)?has_content> + <@p.mostSpecificTypesPerson individual editable/> + + + + <#include "individual-iconControls.ftl"> + + <#if editable && profilePageTypesEnabled > +
+

Profile type

+ +
+ +
+ + <#include "individual-positions.ftl"> + + + <#if !editable> +

+ + <#include "individual-overview.ftl"> + + + <#include "individual-researchAreas.ftl"> + + + +
+
+ <#include "individual-contactInfo-2column.ftl"> +
+
+ <#assign webpage = propertyGroups.pullProperty("${core}webpage")!> + <#if webpage?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> +

Websites <@p.addLink webpage editable ""/>

+ <@p.verboseDisplay webpage /> + <#assign localName = webpage.localName> +
    + <@p.objectProperty webpage editable /> +
+ +
+
+ <#include "individual-openSocial.ftl"> +
+
+ +<#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")!> + + +<#include "individual-property-group-tabs.ftl"> + +<#if targetedView?has_content || user.loggedIn > + + + full view icon + + + +<#if !editable> + + + +<#assign rdfUrl = individual.rdfUrl> + +<#if rdfUrl??> + + + + +${stylesheets.add('', + '', + '', + '')} + +${headScripts.add('', + '', + '', + '', + '')} + +${scripts.add('', + '', + '', + '', + '', + '')} diff --git a/productMods/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl b/productMods/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl new file mode 100644 index 00000000..cb3bfc64 --- /dev/null +++ b/productMods/templates/freemarker/body/individual/individual--foaf-person-quickview.ftl @@ -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 --> + + +<#-- <#include "individual-setup.ftl"> --> +<#import "individual-qrCodeGenerator.ftl" as qr> +<#import "lib-vivo-properties.ftl" as vp> + +<#if !labelCount??> + <#assign labelCount = 0 > + + +<#assign individualImage> + <@p.image individual=individual + propertyGroups=propertyGroups + namespaces=namespaces + editable=editable + showPlaceholder="always"/> + + +<#-- + 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> + +<#else> + <#if (web?size > 0) > + <#assign hasWebpage = true> + <#else> + <#assign hasWebpage = false> + + + +
+
style="width:45%" > +
+ <#if relatedSubject??> +

${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}

+

← return to ${relatedSubject.name}

+ <#else> + <#-- Image --> +
${individualImage}
+

style="float:left;border-right:1px solid #A6B1B0;"> + <#-- Label --> + <@p.label individual editable labelCount/> +

+ <#-- 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 > +
${statement.value}
+ <#else> + ${statement.value} + <@p.editingLinks "${title.name}" statement editable /> + + + + <#-- If preferredTitle is unpopulated, display mostSpecificTypes --> + <#if ! (title.statements)?has_content> + <@p.mostSpecificTypesPerson individual editable /> + + +
+
+ <#include "individual-adminPanel.ftl"> + + + <#include "individual-iconControls.ftl"> + + <#if editable && profilePageTypesEnabled > +
style="margin-top:22px"> +

Profile type

+ +
+ + + <#-- + 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 > + + +
+ + <#include "individual-positions.ftl"> + + + <#include "individual-researchAreas.ftl"> + + + <#assign geographicFocus = propertyGroups.pullProperty("${core}geographicFocus")!> + <#if geographicFocus?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> +

Geographic Focus <@p.addLink geographicFocus editable ""/>

+ <@p.verboseDisplay geographicFocus /> + <#assign localName = geographicFocus.localName> + + <#if geographicFocus.subclasses?has_content > + <#assign subclasses = geographicFocus.subclasses> + <#list subclasses as subclass> + <#assign subclassName = subclass.name!> +
    + <@p.objectPropertyList geographicFocus editable subclass.statements geographicFocus.template/> +
+ + <#else> +
    + <@p.objectProperty geographicFocus editable /> +
+ + + + <#-- If the individual does not have webpages and we're in edit mode, provide the opportunity to add webpages --> + <#if editable && !hasWebpage > + + <#assign webpage = propertyGroups.pullProperty("${core}webpage")!> + <#if webpage?has_content> +

Websites <@p.addLink webpage editable ""/>

+ <@p.verboseDisplay webpage /> + <#assign localName = webpage.localName> +
    + <@p.objectProperty webpage editable /> +
+ + + <#include "individual-visualizationQuickView.ftl"> + + <#include "individual-openSocial.ftl"> +
+
+ +

+
+

+ + + full view icon + + +<#if !editable> + + + +<#assign rdfUrl = individual.rdfUrl> + +<#if rdfUrl??> + + + +<#if editable> + + +${stylesheets.add('', + '', + '', + '')} + +${headScripts.add('', + '', + '', + '', + '')} + +${scripts.add('', + '', + '', + '', + '', + '')} diff --git a/productMods/templates/freemarker/body/individual/individual--foaf-person.ftl b/productMods/templates/freemarker/body/individual/individual--foaf-person.ftl index e2af21fa..a7f2911c 100644 --- a/productMods/templates/freemarker/body/individual/individual--foaf-person.ftl +++ b/productMods/templates/freemarker/body/individual/individual--foaf-person.ftl @@ -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 --> +<#-- + + 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. + + 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. + + This template could also be used to load just the "individual--foaf-person-2column.ftl" + without enabling profile page types. + + --> + <#include "individual-setup.ftl"> -<#import "individual-qrCodeGenerator.ftl" as qr> -<#import "lib-vivo-properties.ftl" as vp> -<#if !labelCount??> - <#assign labelCount = 0 > - -
-
- <#-- Image --> - <#assign individualImage> - <@p.image individual=individual - propertyGroups=propertyGroups - namespaces=namespaces - editable=editable - showPlaceholder="always" /> - +<#-- + First, check to see if profile page types are enabled. If not, get the 2 column template: + "individual--foaf-person-2column.ftl". - <#if ( individualImage?contains(' - <#assign infoClass = 'class="withThumb"'/> - - -
${individualImage}
- - - - <#include "individual-contactInfo.ftl"> - - <#-- Links --> - <@vp.webpages propertyGroups editable "individual-urls-people" /> -
- -
- <#include "individual-visualizationFoafPerson.ftl"> - - <#include "individual-adminPanel.ftl"> - -
- <#if relatedSubject??> -

${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}

-

← return to ${relatedSubject.name}

- <#else> -

- <#-- Label --> - <@p.label individual editable labelCount/> - - <#-- 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> - ${statement.value} - <@p.editingLinks "${title.name}" statement editable /> - - - <#-- If preferredTitle is unpopulated, display mostSpecificTypes --> - <#if ! (title.statements)?has_content> - <@p.mostSpecificTypes individual /> - -

- - - <#-- 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 /> - -
- - <#-- 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 /> - - - <#-- VIVO OpenSocial Extension by UCSF --> - <#if openSocial??> - <#if openSocial.visible> -
-

OpenSocial

- <#-- 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> -
- <#else> -
- -
- - -
- -
- -<#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"> + 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. --> -<#-- 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")!> + +<#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" > + + <#elseif profilePageType == "quickView" > + <#assign selectedTemplate = "individual--foaf-person-quickview.ftl" > + +<#include selectedTemplate > -<#include "individual-properties.ftl"> - -<#assign rdfUrl = individual.rdfUrl> - -<#if rdfUrl??> - - - - -${stylesheets.add('', - '', - '', - '')} - -${headScripts.add('', - '', - '', - '')} - -${scripts.add('', - '', - '', - '', - '')} - diff --git a/productMods/templates/freemarker/body/individual/individual.ftl b/productMods/templates/freemarker/body/individual/individual.ftl index f5043350..ececf942 100644 --- a/productMods/templates/freemarker/body/individual/individual.ftl +++ b/productMods/templates/freemarker/body/individual/individual.ftl @@ -8,8 +8,8 @@ <#assign individualProductExtension> <#-- Include for any class specific template additions --> ${classSpecificExtension!} - <@vp.webpages propertyGroups editable /> + <#include "individual-webpage.ftl"> <#include "individual-overview.ftl">
@@ -18,9 +18,7 @@ <#include "individual-vitro.ftl"> -${stylesheets.add('', - '')} +${stylesheets.add('')} ${headScripts.add('')} -${scripts.add('', - '')} +${scripts.add('')} diff --git a/productMods/templates/freemarker/body/partials/individual/individual-adminPanel.ftl b/productMods/templates/freemarker/body/partials/individual/individual-adminPanel.ftl new file mode 100644 index 00000000..3dcca64c --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-adminPanel.ftl @@ -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> +
+

Admin Panel

Edit this individual + +
+ <#if verbosePropertySwitch?has_content> + <#assign anchorId = "verbosePropertySwitch"> + <#assign currentValue = verbosePropertySwitch.currentValue?string("on", "off")> + <#assign newValue = verbosePropertySwitch.currentValue?string("off", "on")> + Verbose property display is ${currentValue} | + Turn ${newValue} + +
+ + +
+ \ No newline at end of file diff --git a/productMods/templates/freemarker/body/partials/individual/individual-contactInfo-2column.ftl b/productMods/templates/freemarker/body/partials/individual/individual-contactInfo-2column.ftl new file mode 100644 index 00000000..521e1efa --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-contactInfo-2column.ftl @@ -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 ) > +

Contact

+ + +<#-- the layout is different in edit mode --> +<#if !editable> +
+
+ +<#-- Primary Email --> +<@emailLinks "${core}primaryEmail" pEmail /> + +<#-- Additional Emails --> +<@emailLinks "${core}email" email /> +<#if !editable> +
+
+ +<#-- Phone --> +<@phoneLinks phone /> +<#if !editable> +
+
+ +<#macro phoneLinks phone> +<#if phone?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> + <#if editable> +

phone<@p.addLink phone editable />

+ <@p.verboseDisplay phone /> + + <#if phone.statements?has_content> <#-- if there are any statements --> +
    + <#list phone.statements as statement> +
  • style="padding-left:10px;"> + ${statement.value} + <@p.editingLinks "${phone.localName}" statement editable /> +
  • + +
+ + + +<#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 email?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> + <#if editable> +

${label}<@p.addLink email editable label/>

+ <@p.verboseDisplay email /> + + <#if email.statements?has_content> <#-- if there are any statements --> +
    + <#list email.statements as statement> +
  • style="padding-left:10px;"> + + + <@p.editingLinks "${email.localName}" statement editable /> +
  • + +
+ + + \ No newline at end of file diff --git a/productMods/templates/freemarker/body/partials/individual/individual-contactInfo.ftl b/productMods/templates/freemarker/body/partials/individual/individual-contactInfo.ftl index d915843c..983ef2ee 100644 --- a/productMods/templates/freemarker/body/partials/individual/individual-contactInfo.ftl +++ b/productMods/templates/freemarker/body/partials/individual/individual-contactInfo.ftl @@ -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) > +
  • Contact Info
+ + <#-- 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 -->
    <#list phone.statements as statement>
  • - phone icon${statement.value} + <#-- phone icon -->${statement.value} <@p.editingLinks "${phone.localName}" statement editable />
  • @@ -24,8 +32,7 @@ -<#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 @@
      <#list email.statements as statement>
    • - email icon + <#-- email icon --> <@p.editingLinks "${email.localName}" statement editable />
    • @@ -47,4 +54,4 @@
    - \ No newline at end of file + diff --git a/productMods/templates/freemarker/body/partials/individual/individual-iconControls.ftl b/productMods/templates/freemarker/body/partials/individual/individual-iconControls.ftl new file mode 100644 index 00000000..d1cac1a5 --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-iconControls.ftl @@ -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()!> +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 tag below shows an example using Cornell University's directory. + +<#if netid?has_content> + + contact info + + + +--> \ No newline at end of file diff --git a/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl b/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl new file mode 100644 index 00000000..01553334 --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl @@ -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> +

    ${positions.name?capitalize} <@p.addLink positions editable /> <@p.verboseDisplay positions />

    +
      + <@p.objectProperty positions editable /> +
    + \ No newline at end of file diff --git a/productMods/templates/freemarker/body/partials/individual/individual-properties.ftl b/productMods/templates/freemarker/body/partials/individual/individual-properties.ftl new file mode 100644 index 00000000..48ceefde --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-properties.ftl @@ -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> +
    + <#-- Property display name --> + <#if property.localName == "authorInAuthorship" && editable > +

    ${property.name} <@p.addLink property editable /> <@p.verboseDisplay property /> + style="padding-top:10px" > + manage publications + +

    + <#elseif property.localName == "hasResearcherRole" && editable > +

    ${property.name} <@p.addLink property editable /> <@p.verboseDisplay property /> + style="padding-top:10px" > + manage grants & projects + +

    + <#elseif property.localName == "organizationForPosition" && editable > +

    ${property.name} <@p.addLink property editable /> <@p.verboseDisplay property /> + style="padding-top:10px" > + manage affiliated people + +

    + <#else> +

    ${property.name} <@p.addLink property editable /> <@p.verboseDisplay property />

    + + <#-- List the statements for each property --> +
      + <#-- data property --> + <#if property.type == "data"> + <@p.dataPropertyList property editable /> + <#-- object property --> + <#else> + <@p.objectProperty property editable /> + +
    +
    + diff --git a/productMods/templates/freemarker/body/partials/individual/individual-qrCodeGenerator.ftl b/productMods/templates/freemarker/body/partials/individual/individual-qrCodeGenerator.ftl index ed020e51..6061fa19 100644 --- a/productMods/templates/freemarker/body/partials/individual/individual-qrCodeGenerator.ftl +++ b/productMods/templates/freemarker/body/partials/individual/individual-qrCodeGenerator.ftl @@ -34,10 +34,10 @@
    vCard QR
    ${qrCodeLinkedImage} <#elseif (display == "icon")> -
  • - qr icon +<#--
  • --> + qr icon -
  • +<#-- --> <#else>

    You have passed an invalid value for the qrCode display parameter.

    diff --git a/productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl b/productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl new file mode 100644 index 00000000..3b0c0005 --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl @@ -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> +

    + ${researchAreas.name?capitalize} + research areas + <@p.addLink researchAreas editable /> <@p.verboseDisplay researchAreas /> +

    +
      + <@p.objectProperty researchAreas editable /> +
    + diff --git a/productMods/templates/freemarker/body/partials/individual/individual-visualizationFoafPerson.ftl b/productMods/templates/freemarker/body/partials/individual/individual-visualizationFoafPerson.ftl index 1692aa95..f84f7cb7 100644 --- a/productMods/templates/freemarker/body/partials/individual/individual-visualizationFoafPerson.ftl +++ b/productMods/templates/freemarker/body/partials/individual/individual-visualizationFoafPerson.ftl @@ -14,8 +14,7 @@ ${stylesheets.add('')} <#assign standardVisualizationURLRoot ="/visualization"> - -
    + <#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 @@ @@ -41,7 +40,7 @@ @@ -66,10 +65,9 @@ -
    \ No newline at end of file diff --git a/productMods/templates/freemarker/body/partials/individual/individual-visualizationMapOfScience.ftl b/productMods/templates/freemarker/body/partials/individual/individual-visualizationMapOfScience.ftl index 1cd665e5..3ebfd33b 100644 --- a/productMods/templates/freemarker/body/partials/individual/individual-visualizationMapOfScience.ftl +++ b/productMods/templates/freemarker/body/partials/individual/individual-visualizationMapOfScience.ftl @@ -3,5 +3,5 @@ <#-- Map Of Science visualization --> \ No newline at end of file diff --git a/productMods/templates/freemarker/body/partials/individual/individual-visualizationQuickView.ftl b/productMods/templates/freemarker/body/partials/individual/individual-visualizationQuickView.ftl new file mode 100644 index 00000000..f8f63ccc --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-visualizationQuickView.ftl @@ -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 = ""> +

    Networks

    + <#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 = "
  • Co-author network iconCo-Authors
  • " > + + <#assign mapofscience = "
  • Map Of Science iconMap Of Science
  • " > + + + <#if isInvestigator> + <#assign coInvestigatorVisUrl = individual.coInvestigatorVisUrl()> + <#assign coInvestigatorIcon = "${urls.images}/visualization/coauthorship/co_investigator_icon.png"> + <#assign coinvestigator = "
  • Co-investigator network iconCo-Investigators
  • "> + +
      + ${coauthor} + ${coinvestigator} + ${mapofscience} +
    + + + \ No newline at end of file diff --git a/productMods/templates/freemarker/body/partials/individual/individual-webpage.ftl b/productMods/templates/freemarker/body/partials/individual/individual-webpage.ftl new file mode 100644 index 00000000..d3ec7d61 --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/individual-webpage.ftl @@ -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() > +
    • Websites
    + + <@p.addLinkWithLabel webpage editable "Websites"/> + <#assign localName = webpage.localName> +
      style="font-size:1.15em"> + <@p.objectProperty webpage editable /> +
    + + diff --git a/productMods/templates/freemarker/body/partials/individual/propStatement-webpage-quickview.ftl b/productMods/templates/freemarker/body/partials/individual/propStatement-webpage-quickview.ftl new file mode 100644 index 00000000..fa5ef8a2 --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/propStatement-webpage-quickview.ftl @@ -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> + + + + +<@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> + + +<#local imgSize = "&thumbnail=true" > + +<#if (statement.rank?? && statement.rank == "1") || ( count == 1 ) > + <#local imgSize = "" > + +<#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. + +Loading website image. . .    + + + + + <#if imgSize == "" > + +
  • + + + + <#else> +
  • +
  • + + + + +--> +<#-- Here is the placeholder link --> + ${linkText} +<#else> + ${statement.linkName} (no url provided for link) + + + + + \ No newline at end of file diff --git a/productMods/templates/freemarker/lib/lib-vivo-properties.ftl b/productMods/templates/freemarker/lib/lib-vivo-properties.ftl index 426bb2ee..d74c79be 100644 --- a/productMods/templates/freemarker/lib/lib-vivo-properties.ftl +++ b/productMods/templates/freemarker/lib/lib-vivo-properties.ftl @@ -25,10 +25,10 @@ <#if webpage?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> diff --git a/productMods/templates/freemarker/lib/lib-vivo-property-webpage.ftl b/productMods/templates/freemarker/lib/lib-vivo-property-webpage.ftl deleted file mode 100644 index dbf2fa20..00000000 --- a/productMods/templates/freemarker/lib/lib-vivo-property-webpage.ftl +++ /dev/null @@ -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 ---> - -
      - <@p.objectPropertyList webpage editable /> -
    diff --git a/productMods/templates/freemarker/visualization/publication/personPublicationCountDynamicActivator.ftl b/productMods/templates/freemarker/visualization/publication/personPublicationCountDynamicActivator.ftl index b462f957..b049fe1f 100644 --- a/productMods/templates/freemarker/visualization/publication/personPublicationCountDynamicActivator.ftl +++ b/productMods/templates/freemarker/visualization/publication/personPublicationCountDynamicActivator.ftl @@ -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"> diff --git a/productMods/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl b/productMods/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl new file mode 100644 index 00000000..8c91ba88 --- /dev/null +++ b/productMods/templates/freemarker/visualization/publication/personPublicationCountNoSparkline.ftl @@ -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'> + + +<#-- This is used to prevent collision between sparkline & visualization conatiner div ids. --> +<#if visContainerID?upper_case == sparklineContainerID?upper_case> + <#assign sparklineContainerID = visContainerID + "_spark"> + +
    +
    + + +
    + +
    diff --git a/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl b/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl index aae1746f..172b1dcf 100644 --- a/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl +++ b/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl @@ -144,17 +144,26 @@ 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; - - $('#${sparklineContainerID} td.sparkline_number').text(totalPubs + " in the last 10 full").css("font-weight", "bold").css("font-size",".85em").attr("class", "grey"); - - var sparksText = "years"; - - if (totalPubs !== totalPublicationCount) { - sparksText += ' (' + totalPublicationCount + ' total)' ; - } + var sparksText = ""; + if ( !onlyUnknownYearPublications ) { - sparksText += " information icon" ; + $('#${sparklineContainerID} td.sparkline_number').text(totalPubs + " in the last 10 full").attr("class", "grey-text"); + + sparksText += "years"; + + if (totalPubs !== totalPublicationCount) { + sparksText += ' (' + totalPublicationCount + ' total)' ; + } + sparksText += " information icon" ; + + } + else { + var totalPubs = onlyUnknownYearPublications ? unknownYearPublicationCounts : renderedSparks; + + $('#${sparklineContainerID} td.sparkline_number').html(totalPubs + " total information icon").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(" "+ pubDisplay +"
    "); + $('#${sparklineContainerID} td.sparkline_number').text(totalPubs).attr("class", "grey-text").append(" "+ pubDisplay +"
    "); var sparksText = ' from ${sparklineVO.earliestYearConsidered?c}' + ' to ${sparklineVO.latestRenderedPublicationYear?c}'; @@ -189,12 +198,12 @@ if (totalPublicationCount) { sparksText += '
    (.CSV File) '; } + - if (!onlyUnknownYearPublications) { - $('#${sparklineContainerID} td.sparkline_text').html(sparksText); - } + $('#${sparklineContainerID} td.sparkline_text').html(sparksText); + } @@ -258,33 +267,33 @@ }); - + - <#if sparklineVO.shortVisMode> - - <#-- Shifted the link to co-author to the individual-sparkline.ftl instead. --> - - <#else> - - - <#if displayTable?? && displayTable> - -

    - <#assign tableID = "publications_sparkline_data_table" /> - <#assign tableCaption = "Publications per year " /> - <#assign tableActivityColumnName = "Publications" /> - <#assign tableContent = sparklineVO.yearToActivityCount /> - <#assign fileDownloadLink = sparklineVO.downloadDataLink /> - - <#include "yearToActivityCountTable.ftl"> - - Download data as .csv file. -
    -

    - - - - + <#if sparklineVO.shortVisMode> - - \ No newline at end of file + <#-- Shifted the link to co-author to the individual-sparkline.ftl instead. --> + + <#else> + + + <#if displayTable?? && displayTable> + +

    + <#assign tableID = "publications_sparkline_data_table" /> + <#assign tableCaption = "Publications per year " /> + <#assign tableActivityColumnName = "Publications" /> + <#assign tableContent = sparklineVO.yearToActivityCount /> + <#assign fileDownloadLink = sparklineVO.downloadDataLink /> + + <#include "yearToActivityCountTable.ftl"> + + Download data as .csv file. +
    +

    + + + + + + + diff --git a/themes/wilma/css/wilma.css b/themes/wilma/css/wilma.css index 32ee17ac..6419b18c 100644 --- a/themes/wilma/css/wilma.css +++ b/themes/wilma/css/wilma.css @@ -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 { diff --git a/themes/wilma/templates/individual--foaf-person.ftl b/themes/wilma/templates/individual--foaf-person.ftl new file mode 100644 index 00000000..5c1e464f --- /dev/null +++ b/themes/wilma/templates/individual--foaf-person.ftl @@ -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 > + +
    + +
    + + <#assign individualImage> + <@p.image individual=individual + propertyGroups=propertyGroups + namespaces=namespaces + editable=editable + showPlaceholder="always" /> + + + <#if ( individualImage?contains(' + <#assign infoClass = 'class="withThumb"'/> + + +
    ${individualImage}
    + + <#include "individual-contactInfo.ftl"> + + + <#include "individual-webpage.ftl"> +
    + +
    +
    +
    + uri icon + <@qr.renderCode /> +
    + <#include "individual-visualizationFoafPerson.ftl"> +
    + <#include "individual-adminPanel.ftl"> + +
    + <#if relatedSubject??> +

    ${relatedSubject.relatingPredicateDomainPublic} for ${relatedSubject.name}

    +

    ← return to ${relatedSubject.name}

    + <#else> +

    + <#-- Label --> + <@p.label individual editable labelCount/> + + <#-- 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> + ${statement.value} + <@p.editingLinks "${title.name}" statement editable /> + + + <#-- If preferredTitle is unpopulated, display mostSpecificTypes --> + <#if ! (title.statements)?has_content> + <@p.mostSpecificTypes individual /> + +

    + + + <#include "individual-positions.ftl"> +
    + + + <#include "individual-overview.ftl"> + + + <#include "individual-researchAreas.ftl"> + + <#include "individual-openSocial.ftl"> +
    + +
    + +<#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")!> + + + +<#-- + 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??> + + + + +${stylesheets.add('', + '', + '')} + +${headScripts.add('', + '', + '')} + +${scripts.add('', + '', + '', + '', + '')} + diff --git a/themes/wilma/templates/individual-openSocial.ftl b/themes/wilma/templates/individual-openSocial.ftl new file mode 100644 index 00000000..1b81659e --- /dev/null +++ b/themes/wilma/templates/individual-openSocial.ftl @@ -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> +
    +

    OpenSocial

    + <#-- 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> +
    + <#else> +
    + +
    + + \ No newline at end of file