changes for the home page redesign
This commit is contained in:
parent
a6eab19a96
commit
0d0b5ea48a
21 changed files with 9903 additions and 24 deletions
|
@ -243,3 +243,9 @@ RDFService.languageFilter = true
|
||||||
# the individual's webpage presence. The following flag should be uncommented when implementing the multiple
|
# the individual's webpage presence. The following flag should be uncommented when implementing the multiple
|
||||||
# views.
|
# views.
|
||||||
#MultiViews.profilePageTypes=enabled
|
#MultiViews.profilePageTypes=enabled
|
||||||
|
|
||||||
|
# Geo Focus Maps
|
||||||
|
# When the following flag is uncommented, the VIVO home page displays global and US maps highlighting the geographical
|
||||||
|
# focus of foaf:person individuals.
|
||||||
|
#homePage.geoFocusMaps=enabled
|
||||||
|
|
||||||
|
|
BIN
productMods/images/count-background.png
Normal file
BIN
productMods/images/count-background.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
BIN
productMods/images/placeholders/person.bordered.thumbnail.jpg
Normal file
BIN
productMods/images/placeholders/person.bordered.thumbnail.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.9 KiB |
359
productMods/js/homePageMaps.js
Normal file
359
productMods/js/homePageMaps.js
Normal file
|
@ -0,0 +1,359 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
|
||||||
|
var globalMapBuilt = false;
|
||||||
|
var usMapBuilt = false;
|
||||||
|
var stateMapBuilt = false;
|
||||||
|
var researchAreas = { "type": "FeatureCollection", "features": []};
|
||||||
|
|
||||||
|
$.extend(this, urlsBase);
|
||||||
|
|
||||||
|
getGeoJsonForMaps();
|
||||||
|
|
||||||
|
$('a#globalLink').click(function() {
|
||||||
|
buildGlobalMap();
|
||||||
|
$(this).addClass("selected");
|
||||||
|
$('a#usLink').removeClass("selected");
|
||||||
|
$('a#nyLink').removeClass("selected");
|
||||||
|
});
|
||||||
|
|
||||||
|
$('a#usLink').click(function() {
|
||||||
|
buildUSMap();
|
||||||
|
$(this).addClass("selected");
|
||||||
|
$('a#globalLink').removeClass("selected");
|
||||||
|
$('a#nyLink').removeClass("selected");
|
||||||
|
});
|
||||||
|
|
||||||
|
$('a#stateLink').click(function() {
|
||||||
|
buildStateMap();
|
||||||
|
$(this).addClass("selected");
|
||||||
|
$('a#usLink').removeClass("selected");
|
||||||
|
$('a#globalLink').removeClass("selected");
|
||||||
|
});
|
||||||
|
|
||||||
|
function getLatLong(country) {
|
||||||
|
var lat = [];
|
||||||
|
latLongJson.map(function (json) {
|
||||||
|
if ( json.name == country) {
|
||||||
|
lat.push(json.data["longitude"]);
|
||||||
|
lat.push(json.data["latitude"]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (lat.length == 0) {
|
||||||
|
lat.push(0.0);
|
||||||
|
lat.push(0.0);
|
||||||
|
}
|
||||||
|
return(lat);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMapType(country) {
|
||||||
|
var mt = "";
|
||||||
|
latLongJson.map(function (json) {
|
||||||
|
if ( json.name == country) {
|
||||||
|
mt = json.data["mapType"];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return(mt);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onEachFeature(feature, layer) {
|
||||||
|
var popupContent = "";
|
||||||
|
var uri = "";
|
||||||
|
|
||||||
|
if (feature.properties && feature.properties.popupContent) {
|
||||||
|
popupContent += feature.properties.popupContent;
|
||||||
|
}
|
||||||
|
if (feature.properties && feature.properties.html) {
|
||||||
|
if ( feature.properties.html == "1") {
|
||||||
|
popupContent += ": " + feature.properties.html + " researcher";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
popupContent += ": " + feature.properties.html + " researchers";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
layer.on('mouseover', function(e) {
|
||||||
|
e.target.bindPopup(popupContent,{closeButton:false}).openPopup();
|
||||||
|
});
|
||||||
|
layer.on('mouseout', function(e) {
|
||||||
|
e.target.closePopup();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (feature.properties && feature.properties.uri) {
|
||||||
|
uri += feature.properties.uri;
|
||||||
|
layer.on('click', function(e) {
|
||||||
|
document.location.href = urlsBase + "/individual?uri=" + uri + "&#map";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDivIcon(feature) {
|
||||||
|
var htmlContent = "";
|
||||||
|
var myIcon;
|
||||||
|
|
||||||
|
if (feature.properties && feature.properties.html) {
|
||||||
|
htmlContent += feature.properties.html;
|
||||||
|
}
|
||||||
|
if ( htmlContent > 99 ) {
|
||||||
|
myIcon = L.divIcon({className: 'divIconCountPlus', html: htmlContent});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
myIcon = L.divIcon({className: 'divIconCount', html: htmlContent});
|
||||||
|
}
|
||||||
|
return myIcon;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMarkerRadius(feature) {
|
||||||
|
var radiusContent;
|
||||||
|
|
||||||
|
if (feature.properties && feature.properties.radius) {
|
||||||
|
radiusContent = feature.properties.radius;
|
||||||
|
}
|
||||||
|
return radiusContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkGlobalCoordinates(feature, layer) {
|
||||||
|
var theLatLng = new L.LatLng(feature.geometry.coordinates[0],feature.geometry.coordinates[1]);
|
||||||
|
var mt = feature.properties.mapType;
|
||||||
|
if ( !theLatLng.equals([0,0]) && mt == "global" ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkUSCoordinates(feature, layer) {
|
||||||
|
var theLatLng = new L.LatLng(feature.geometry.coordinates[0],feature.geometry.coordinates[1]);
|
||||||
|
var mt = feature.properties.mapType;
|
||||||
|
if ( !theLatLng.equals([0,0]) && mt == "US" ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkStateCoordinates(feature, layer) {
|
||||||
|
var theLatLng = new L.LatLng(feature.geometry.coordinates[0],feature.geometry.coordinates[1]);
|
||||||
|
var mt = feature.properties.mapType;
|
||||||
|
if ( !theLatLng.equals([0,0]) && mt == "state" ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildGlobalMap() {
|
||||||
|
$('div#mapGlobal').show();
|
||||||
|
$('div#mapUS').hide();
|
||||||
|
$('div#mapState').hide();
|
||||||
|
|
||||||
|
if ( !globalMapBuilt ) {
|
||||||
|
|
||||||
|
var mapGlobal = L.map('mapGlobal').setView([25.25, 23.20], 2);
|
||||||
|
L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/tile\/{z}\/{y}\/{x}.png', {
|
||||||
|
maxZoom: 12,
|
||||||
|
minZoom: 1,
|
||||||
|
boxZoom: false,
|
||||||
|
doubleClickZoom: false,
|
||||||
|
attribution: 'Tiles © <a href="http://www.esri.com/">Esri</a>'
|
||||||
|
}).addTo(mapGlobal);
|
||||||
|
|
||||||
|
L.geoJson(researchAreas, {
|
||||||
|
|
||||||
|
filter: checkGlobalCoordinates,
|
||||||
|
onEachFeature: onEachFeature,
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
return L.circleMarker(latlng, {
|
||||||
|
radius: getMarkerRadius(feature),
|
||||||
|
fillColor: "#fdf9cd", //fdf38a",
|
||||||
|
color: "none",
|
||||||
|
weight: 1,
|
||||||
|
opacity: 0.8,
|
||||||
|
fillOpacity: 0.8
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).addTo(mapGlobal);
|
||||||
|
|
||||||
|
L.geoJson(researchAreas, {
|
||||||
|
|
||||||
|
filter: checkGlobalCoordinates,
|
||||||
|
onEachFeature: onEachFeature,
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
return L.marker(latlng, {
|
||||||
|
icon: getDivIcon(feature)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).addTo(mapGlobal);
|
||||||
|
|
||||||
|
globalMapBuilt = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getResearcherCount("global");
|
||||||
|
} // Canvas/World_Light_Gray_Base
|
||||||
|
|
||||||
|
function buildUSMap() {
|
||||||
|
$('div#mapGlobal').hide();
|
||||||
|
$('div#mapState').hide();
|
||||||
|
$('div#mapUS').show();
|
||||||
|
|
||||||
|
if ( !usMapBuilt ) {
|
||||||
|
|
||||||
|
var mapUS = L.map('mapUS').setView([46.0, -97.0], 3);
|
||||||
|
L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/tile\/{z}\/{y}\/{x}.png', {
|
||||||
|
maxZoom: 30,
|
||||||
|
minZoom: 1,
|
||||||
|
boxZoom: false,
|
||||||
|
zIndex: 1,
|
||||||
|
doubleClickZoom: false,
|
||||||
|
attribution: 'Tiles © <a href="http://www.esri.com/">Esri</a>'
|
||||||
|
}).addTo(mapUS);
|
||||||
|
|
||||||
|
L.geoJson(researchAreas, {
|
||||||
|
|
||||||
|
filter: checkUSCoordinates,
|
||||||
|
onEachFeature: onEachFeature,
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
return L.circleMarker(latlng, {
|
||||||
|
radius: getMarkerRadius(feature),
|
||||||
|
fillColor: "#fdf9cd", //fdf38a",
|
||||||
|
color: "none",
|
||||||
|
weight: 1,
|
||||||
|
opacity: 0.8,
|
||||||
|
fillOpacity: 0.8
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).addTo(mapUS);
|
||||||
|
|
||||||
|
L.geoJson(researchAreas, {
|
||||||
|
|
||||||
|
filter: checkUSCoordinates,
|
||||||
|
onEachFeature: onEachFeature,
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
return L.marker(latlng, {
|
||||||
|
icon: getDivIcon(feature)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).addTo(mapUS);
|
||||||
|
|
||||||
|
usMapBuilt = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getResearcherCount("US");
|
||||||
|
} // Canvas/World_Light_Gray_Base - services/Reference/World_Boundaries_and_Places_Alternate/MapServer
|
||||||
|
|
||||||
|
function buildStateMap() {
|
||||||
|
$('div#mapGlobal').hide();
|
||||||
|
$('div#mapUS').hide();
|
||||||
|
$('div#mapState').show();
|
||||||
|
|
||||||
|
if ( !stateMapBuilt ) {
|
||||||
|
|
||||||
|
// CHANGE THE setView COORDINATES SO THAT THE STATE YOU WANT TO DISPLAY IS CENTERED CORRECTLY.
|
||||||
|
// THE COORDINATES BELOW ARE FOR NEW YORK.
|
||||||
|
var mapState = L.map('mapState').setView([42.83, -75.50], 7);
|
||||||
|
L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/tile\/{z}\/{y}\/{x}.png', {
|
||||||
|
maxZoom: 12,
|
||||||
|
minZoom: 1,
|
||||||
|
boxZoom: false,
|
||||||
|
doubleClickZoom: false,
|
||||||
|
attribution: 'Tiles © <a href="http://www.esri.com/">Esri</a>'
|
||||||
|
}).addTo(mapState);
|
||||||
|
|
||||||
|
L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places_Alternate/MapServer/tile\/{z}\/{y}\/{x}.png', {
|
||||||
|
maxZoom: 12,
|
||||||
|
minZoom: 1,
|
||||||
|
boxZoom: false,
|
||||||
|
doubleClickZoom: false
|
||||||
|
}).addTo(mapState);
|
||||||
|
|
||||||
|
L.geoJson(researchAreas, {
|
||||||
|
|
||||||
|
filter: checkStateCoordinates,
|
||||||
|
onEachFeature: onEachFeature,
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
return L.circleMarker(latlng, {
|
||||||
|
radius: getMarkerRadius(feature) + 3,
|
||||||
|
fillColor: "#fdf9cd",
|
||||||
|
color: "none",
|
||||||
|
weight: 1,
|
||||||
|
opacity: 0.8,
|
||||||
|
fillOpacity: 0.8
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).addTo(mapState);
|
||||||
|
|
||||||
|
L.geoJson(researchAreas, {
|
||||||
|
|
||||||
|
filter: checkStateCoordinates,
|
||||||
|
onEachFeature: onEachFeature,
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
return L.marker(latlng, {
|
||||||
|
icon: getDivIcon(feature)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).addTo(mapState);
|
||||||
|
|
||||||
|
stateMapBuilt = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getResearcherCount("state");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getGeoJsonForMaps() {
|
||||||
|
$.ajax({
|
||||||
|
url: urlsBase + "/homePageAjax",
|
||||||
|
dataType: "json",
|
||||||
|
data: {
|
||||||
|
action: "getGeoFocusLocations",
|
||||||
|
},
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
var results = $.parseJSON(xhr.responseText);
|
||||||
|
|
||||||
|
$.each(results, function() {
|
||||||
|
var locale = this.properties.popupContent;
|
||||||
|
this.geometry.coordinates = getLatLong(locale);
|
||||||
|
this.properties.mapType = getMapType(locale);
|
||||||
|
researchAreas["features"].push(this);
|
||||||
|
});
|
||||||
|
buildGlobalMap();
|
||||||
|
$('div#timeIndicator').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getResearcherCount(area) {
|
||||||
|
|
||||||
|
var researcherCount = 0;
|
||||||
|
var areaCount = 0;
|
||||||
|
var text = "";
|
||||||
|
if ( area == "global" ) {
|
||||||
|
text = " countries and regions.";
|
||||||
|
}
|
||||||
|
else if ( area == "US" ) {
|
||||||
|
text = " states.";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
text = " state-wide locations.";
|
||||||
|
}
|
||||||
|
|
||||||
|
$.each(researchAreas.features, function() {
|
||||||
|
if ( this.properties.mapType == area ) {
|
||||||
|
researcherCount = researcherCount + this.properties.html ;
|
||||||
|
areaCount = areaCount + 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if ( areaCount == 1 && text == " states.") {
|
||||||
|
text = " state.";
|
||||||
|
}
|
||||||
|
|
||||||
|
$('div#researcherTotal').html("<font style='font-size:1.05em;color:#167093'>"
|
||||||
|
+ researcherCount.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2')
|
||||||
|
+ "</font> researchers in <font style='font-size:1.05em;color:#167093'>"
|
||||||
|
+ areaCount + "</font>" + text);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
113
productMods/js/homePageUtils.js
Normal file
113
productMods/js/homePageUtils.js
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
|
||||||
|
$.extend(this, urlsBase);
|
||||||
|
// $.extend(this, facultyMemberCount);
|
||||||
|
|
||||||
|
getFacultyMembers();
|
||||||
|
buildAcademicDepartments();
|
||||||
|
|
||||||
|
if ( $('section#home-geo-focus').length == 0 ) {
|
||||||
|
$('section#home-stats').css("display","inline-block").css("margin-top","20px");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFacultyMembers() {
|
||||||
|
|
||||||
|
// determine the row at which to start the solr query
|
||||||
|
var rowStart = Math.floor((Math.random()*facultyMemberCount)+1)-1;
|
||||||
|
var diff;
|
||||||
|
var pageSize = 4; // the number of faculty to display on the home page
|
||||||
|
|
||||||
|
// in case the random number is equal to or within 3 of the facultyMemberCount
|
||||||
|
if ( (rowStart + (pageSize-1)) > facultyMemberCount ) {
|
||||||
|
diff = (rowStart + (pageSize-1)) - facultyMemberCount;
|
||||||
|
if ( diff == 0 ) {
|
||||||
|
rowStart = rowStart - (pageSize-1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rowStart = rowStart - diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var dataServiceUrl = urlsBase + "/dataservice?getRandomSolrIndividualsByVClass=1&vclassId=";
|
||||||
|
var url = dataServiceUrl + encodeURIComponent("http://vivoweb.org/ontology/core#FacultyMember");
|
||||||
|
url += "&page=" + rowStart + "&pageSize=" + pageSize;
|
||||||
|
|
||||||
|
$.getJSON(url, function(results) {
|
||||||
|
var individualList = "";
|
||||||
|
if ( results == null || results.individuals.length == 0 ) {
|
||||||
|
individualList = "<p><li>No faculty records found.</li></p>";
|
||||||
|
$('div#tempSpacing').hide();
|
||||||
|
$('div#research-faculty-mbrs ul#facultyThumbs').append(individualList);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var vclassName = results.vclass.name;
|
||||||
|
$.each(results.individuals, function(i, item) {
|
||||||
|
var individual = results.individuals[i];
|
||||||
|
individualList += individual.shortViewHtml;
|
||||||
|
});
|
||||||
|
$('div#tempSpacing').hide();
|
||||||
|
$('div#research-faculty-mbrs ul#facultyThumbs').append(individualList);
|
||||||
|
|
||||||
|
$.each($('div#research-faculty-mbrs ul#facultyThumbs li.individual'), function() {
|
||||||
|
if ( $(this).children('img').length == 0 ) {
|
||||||
|
var imgHtml = "<img width='60' alt='placeholder image' src='" + urlsBase + "/images/placeholders/person.bordered.thumbnail.jpg'>";
|
||||||
|
$(this).prepend(imgHtml);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(this).children('img').load( function() {
|
||||||
|
adjustImageHeight($(this));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var viewMore = "<ul id='viewMoreFac'><li><a href='"
|
||||||
|
+ urlsBase
|
||||||
|
+ "/people/%23http://vivoweb.org/ontology/core%23FacultyMember' alt='view all faculty'>"
|
||||||
|
+ "View all ...</a></li?</ul>";
|
||||||
|
$('div#research-faculty-mbrs').append(viewMore);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function adjustImageHeight(theImg) {
|
||||||
|
$img = theImg;
|
||||||
|
var hgt = $img.attr("height");
|
||||||
|
if ( hgt > 70 ) {
|
||||||
|
var liHtml = $img.parent('li').html();
|
||||||
|
liHtml = liHtml.replace("<img","<div id='adjImgHeight'><img");
|
||||||
|
liHtml = liHtml.replace("<h1","</div><h1");
|
||||||
|
$img.parent('li').html(liHtml);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildAcademicDepartments() {
|
||||||
|
var deptNbr = academicDepartments.length;
|
||||||
|
var html = "<ul>";
|
||||||
|
var index = Math.floor((Math.random()*deptNbr)+1)-1;
|
||||||
|
|
||||||
|
if ( deptNbr == 0 ) {
|
||||||
|
html += "<p><li>No academic departments found.</li></p>";
|
||||||
|
}
|
||||||
|
else if ( deptNbr > 6 ) {
|
||||||
|
for ( var i=0;i<6;i++) {
|
||||||
|
html += "<li><a href='${urls.base}/display"
|
||||||
|
+ academicDepartments[index].uri + "'>"
|
||||||
|
+ academicDepartments[index].name + "</a></li>";
|
||||||
|
index = Math.floor((Math.random()*deptNbr)+1)-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for ( var i=0;i<deptNbr;i++) {
|
||||||
|
html += "<li><a href='${urls.base}/display"
|
||||||
|
+ academicDepartments[i].uri + "'>"
|
||||||
|
+ academicDepartments[i].name + "</a></li>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( deptNbr > 0 ) {
|
||||||
|
html += "</ul><ul style='list-style:none'><li style='font-size:0.9em;text-align:right;padding: 6px 16px 0 0'><a href='" + urlsBase + "/organizations/%23http://vivoweb.org/ontology/core%23AcademicDepartment' alt='view all academic departments'>View all ...</a></li></ul>";
|
||||||
|
}
|
||||||
|
$('div#academic-depts').html(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
10
productMods/js/latLongJson.js
Normal file
10
productMods/js/latLongJson.js
Normal file
File diff suppressed because one or more lines are too long
23
productMods/js/leaflet/LICENSE
Executable file
23
productMods/js/leaflet/LICENSE
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
Copyright (c) 2010-2013, Vladimir Agafonkin
|
||||||
|
Copyright (c) 2010-2011, CloudMade
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
BIN
productMods/js/leaflet/dist/images/layers.png
vendored
Executable file
BIN
productMods/js/leaflet/dist/images/layers.png
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 973 B |
BIN
productMods/js/leaflet/dist/images/marker-icon.png
vendored
Executable file
BIN
productMods/js/leaflet/dist/images/marker-icon.png
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
productMods/js/leaflet/dist/images/marker-icon@2x.png
vendored
Executable file
BIN
productMods/js/leaflet/dist/images/marker-icon@2x.png
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
BIN
productMods/js/leaflet/dist/images/marker-shadow.png
vendored
Executable file
BIN
productMods/js/leaflet/dist/images/marker-shadow.png
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 797 B |
8339
productMods/js/leaflet/dist/leaflet-src.js
vendored
Executable file
8339
productMods/js/leaflet/dist/leaflet-src.js
vendored
Executable file
File diff suppressed because it is too large
Load diff
457
productMods/js/leaflet/dist/leaflet.css
vendored
Executable file
457
productMods/js/leaflet/dist/leaflet.css
vendored
Executable file
|
@ -0,0 +1,457 @@
|
||||||
|
/* required styles */
|
||||||
|
|
||||||
|
.leaflet-map-pane,
|
||||||
|
.leaflet-tile,
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow,
|
||||||
|
.leaflet-tile-pane,
|
||||||
|
.leaflet-overlay-pane,
|
||||||
|
.leaflet-shadow-pane,
|
||||||
|
.leaflet-marker-pane,
|
||||||
|
.leaflet-popup-pane,
|
||||||
|
.leaflet-overlay-pane svg,
|
||||||
|
.leaflet-zoom-box,
|
||||||
|
.leaflet-image-layer,
|
||||||
|
.leaflet-layer {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.leaflet-container {
|
||||||
|
overflow: hidden;
|
||||||
|
-ms-touch-action: none;
|
||||||
|
}
|
||||||
|
.leaflet-tile,
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
/* map is broken in FF if you have max-width: 100% on tiles */
|
||||||
|
.leaflet-container img {
|
||||||
|
max-width: none !important;
|
||||||
|
}
|
||||||
|
/* stupid Android 2 doesn't understand "max-width: none" properly */
|
||||||
|
.leaflet-container img.leaflet-image-layer {
|
||||||
|
max-width: 15000px !important;
|
||||||
|
}
|
||||||
|
.leaflet-tile {
|
||||||
|
filter: inherit;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.leaflet-tile-loaded {
|
||||||
|
visibility: inherit;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-box {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-tile-pane { z-index: 2; }
|
||||||
|
.leaflet-objects-pane { z-index: 3; }
|
||||||
|
.leaflet-overlay-pane { z-index: 4; }
|
||||||
|
.leaflet-shadow-pane { z-index: 5; }
|
||||||
|
.leaflet-marker-pane { z-index: 6; }
|
||||||
|
.leaflet-popup-pane { z-index: 7; }
|
||||||
|
|
||||||
|
|
||||||
|
/* control positioning */
|
||||||
|
|
||||||
|
.leaflet-control {
|
||||||
|
position: relative;
|
||||||
|
z-index: 7;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.leaflet-top,
|
||||||
|
.leaflet-bottom {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1000;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.leaflet-top {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.leaflet-right {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.leaflet-bottom {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.leaflet-left {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.leaflet-control {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.leaflet-right .leaflet-control {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.leaflet-top .leaflet-control {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-bottom .leaflet-control {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-left .leaflet-control {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-right .leaflet-control {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* zoom and fade animations */
|
||||||
|
|
||||||
|
.leaflet-fade-anim .leaflet-tile,
|
||||||
|
.leaflet-fade-anim .leaflet-popup {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transition: opacity 0.2s linear;
|
||||||
|
-moz-transition: opacity 0.2s linear;
|
||||||
|
-o-transition: opacity 0.2s linear;
|
||||||
|
transition: opacity 0.2s linear;
|
||||||
|
}
|
||||||
|
.leaflet-fade-anim .leaflet-tile-loaded,
|
||||||
|
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||||
|
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
}
|
||||||
|
.leaflet-zoom-anim .leaflet-tile,
|
||||||
|
.leaflet-pan-anim .leaflet-tile,
|
||||||
|
.leaflet-touching .leaflet-zoom-animated {
|
||||||
|
-webkit-transition: none;
|
||||||
|
-moz-transition: none;
|
||||||
|
-o-transition: none;
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-hide {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* cursors */
|
||||||
|
|
||||||
|
.leaflet-clickable {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.leaflet-container {
|
||||||
|
cursor: -webkit-grab;
|
||||||
|
cursor: -moz-grab;
|
||||||
|
}
|
||||||
|
.leaflet-popup-pane,
|
||||||
|
.leaflet-control {
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
.leaflet-dragging,
|
||||||
|
.leaflet-dragging .leaflet-clickable,
|
||||||
|
.leaflet-dragging .leaflet-container {
|
||||||
|
cursor: move;
|
||||||
|
cursor: -webkit-grabbing;
|
||||||
|
cursor: -moz-grabbing;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* visual tweaks */
|
||||||
|
|
||||||
|
.leaflet-container {
|
||||||
|
background: #ddd;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
.leaflet-container a {
|
||||||
|
color: #0078A8;
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-active {
|
||||||
|
outline: 2px solid orange;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-box {
|
||||||
|
border: 2px dotted #05f;
|
||||||
|
background: white;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* general typography */
|
||||||
|
.leaflet-container {
|
||||||
|
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* general toolbar styles */
|
||||||
|
|
||||||
|
.leaflet-bar {
|
||||||
|
box-shadow: 0 0 8px rgba(0,0,0,0.4);
|
||||||
|
border: 1px solid #888;
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-bar-part {
|
||||||
|
background-color: rgba(255, 255, 255, 0.8);
|
||||||
|
border-bottom: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
.leaflet-bar-part-top {
|
||||||
|
-webkit-border-radius: 4px 4px 0 0;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
}
|
||||||
|
.leaflet-bar-part-bottom {
|
||||||
|
-webkit-border-radius: 0 0 4px 4px;
|
||||||
|
border-radius: 0 0 4px 4px;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-bar {
|
||||||
|
-webkit-border-radius: 10px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-bar-part {
|
||||||
|
border-bottom: 4px solid rgba(0,0,0,0.3);
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-bar-part-top {
|
||||||
|
-webkit-border-radius: 7px 7px 0 0;
|
||||||
|
border-radius: 7px 7px 0 0;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-bar-part-bottom {
|
||||||
|
-webkit-border-radius: 0 0 7px 7px;
|
||||||
|
border-radius: 0 0 7px 7px;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* zoom control */
|
||||||
|
|
||||||
|
.leaflet-container .leaflet-control-zoom {
|
||||||
|
margin-left: 13px;
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom a {
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom a,
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-position: 50% 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom a:hover {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom-in {
|
||||||
|
font: bold 18px/24px Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom-out {
|
||||||
|
font: bold 23px/20px Tahoma, Verdana, sans-serif;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom a.leaflet-control-zoom-disabled {
|
||||||
|
cursor: default;
|
||||||
|
background-color: rgba(255, 255, 255, 0.8);
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-control-zoom a {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-zoom-in {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 29px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-zoom-out {
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* layers control */
|
||||||
|
|
||||||
|
.leaflet-control-layers {
|
||||||
|
box-shadow: 0 1px 7px rgba(0,0,0,0.4);
|
||||||
|
background: #f8f8f9;
|
||||||
|
-webkit-border-radius: 8px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-image: url(images/layers.png);
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-layers-toggle {
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers .leaflet-control-layers-list,
|
||||||
|
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-expanded {
|
||||||
|
padding: 6px 10px 6px 6px;
|
||||||
|
color: #333;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-selector {
|
||||||
|
margin-top: 2px;
|
||||||
|
position: relative;
|
||||||
|
top: 1px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers label {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-separator {
|
||||||
|
height: 0;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
margin: 5px -10px 5px -6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* attribution and scale controls */
|
||||||
|
|
||||||
|
.leaflet-container .leaflet-control-attribution {
|
||||||
|
background-color: rgba(255, 255, 255, 0.7);
|
||||||
|
box-shadow: 0 0 5px #bbb;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution,
|
||||||
|
.leaflet-control-scale-line {
|
||||||
|
padding: 0 5px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.leaflet-container .leaflet-control-attribution,
|
||||||
|
.leaflet-container .leaflet-control-scale {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
.leaflet-left .leaflet-control-scale {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-bottom .leaflet-control-scale {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line {
|
||||||
|
border: 2px solid #777;
|
||||||
|
border-top: none;
|
||||||
|
color: black;
|
||||||
|
line-height: 1.1;
|
||||||
|
padding: 2px 5px 1px;
|
||||||
|
font-size: 11px;
|
||||||
|
text-shadow: 1px 1px 1px #fff;
|
||||||
|
background-color: rgba(255, 255, 255, 0.5);
|
||||||
|
box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line:not(:first-child) {
|
||||||
|
border-top: 2px solid #777;
|
||||||
|
border-bottom: none;
|
||||||
|
margin-top: -2px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
||||||
|
border-bottom: 2px solid #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-control-attribution,
|
||||||
|
.leaflet-touch .leaflet-control-layers,
|
||||||
|
.leaflet-touch .leaflet-control-zoom {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-layers,
|
||||||
|
.leaflet-touch .leaflet-control-zoom {
|
||||||
|
border: 4px solid rgba(0,0,0,0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* popup */
|
||||||
|
|
||||||
|
.leaflet-popup {
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper {
|
||||||
|
padding: 1px;
|
||||||
|
text-align: left;
|
||||||
|
-webkit-border-radius: 20px;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content {
|
||||||
|
margin: 14px 20px;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content p {
|
||||||
|
margin: 18px 0;
|
||||||
|
}
|
||||||
|
.leaflet-popup-tip-container {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 40px;
|
||||||
|
height: 20px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.leaflet-popup-tip {
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
padding: 1px;
|
||||||
|
|
||||||
|
margin: -8px auto 0;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(45deg);
|
||||||
|
-moz-transform: rotate(45deg);
|
||||||
|
-ms-transform: rotate(45deg);
|
||||||
|
-o-transform: rotate(45deg);
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper, .leaflet-popup-tip {
|
||||||
|
background: white;
|
||||||
|
|
||||||
|
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-popup-close-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: 4px 5px 0 0;
|
||||||
|
text-align: center;
|
||||||
|
width: 18px;
|
||||||
|
height: 14px;
|
||||||
|
font: 16px/14px Tahoma, Verdana, sans-serif;
|
||||||
|
color: #c3c3c3;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-popup-close-button:hover {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.leaflet-popup-scrolled {
|
||||||
|
overflow: auto;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* div icon */
|
||||||
|
|
||||||
|
.leaflet-div-icon {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #666;
|
||||||
|
}
|
||||||
|
.leaflet-editing-icon {
|
||||||
|
-webkit-border-radius: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
57
productMods/js/leaflet/dist/leaflet.ie.css
vendored
Executable file
57
productMods/js/leaflet/dist/leaflet.ie.css
vendored
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
.leaflet-vml-shape {
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
.lvml {
|
||||||
|
behavior: url(#default#VML);
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-control {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-popup-tip {
|
||||||
|
width: 21px;
|
||||||
|
_width: 27px;
|
||||||
|
margin: 0 auto;
|
||||||
|
_margin-top: -3px;
|
||||||
|
|
||||||
|
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
||||||
|
}
|
||||||
|
.leaflet-popup-tip-container {
|
||||||
|
margin-top: -1px;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper, .leaflet-popup-tip {
|
||||||
|
border: 1px solid #999;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper {
|
||||||
|
zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-control-zoom,
|
||||||
|
.leaflet-control-layers {
|
||||||
|
border: 3px solid #999;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom a {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.leaflet-control-zoom a:hover {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution,
|
||||||
|
.leaflet-control-layers,
|
||||||
|
.leaflet-control-scale-line {
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-box {
|
||||||
|
filter: alpha(opacity=50);
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution {
|
||||||
|
border-top: 1px solid #bbb;
|
||||||
|
border-left: 1px solid #bbb;
|
||||||
|
}
|
8
productMods/js/leaflet/dist/leaflet.js
vendored
Executable file
8
productMods/js/leaflet/dist/leaflet.js
vendored
Executable file
File diff suppressed because one or more lines are too long
131
productMods/templates/freemarker/lib/lib-home-page.ftl
Normal file
131
productMods/templates/freemarker/lib/lib-home-page.ftl
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Macros used to build the statistical information on the home page -->
|
||||||
|
|
||||||
|
<#-- Get the classgroups so they can be used to qualify searches -->
|
||||||
|
<#macro allClassGroupNames classGroups>
|
||||||
|
<#list classGroups as group>
|
||||||
|
<#-- Only display populated class groups -->
|
||||||
|
<#if (group.individualCount > 0)>
|
||||||
|
<li role="listitem"><a href="" title="${group.uri}">${group.displayName?capitalize}</a></li>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</#macro>
|
||||||
|
|
||||||
|
<#-- We need the faculty count in order to randomly select 4 faculty using a solr query -->
|
||||||
|
<#macro facultyMemberCount classGroups>
|
||||||
|
<#assign foundClassGroup = false />
|
||||||
|
<#list classGroups as group>
|
||||||
|
<#if (group.individualCount > 0) && group.displayName == "people" >
|
||||||
|
<#list group.classes as class>
|
||||||
|
<#if (class.name == "Faculty Member") >
|
||||||
|
<#assign foundClassGroup = true />
|
||||||
|
<#if (class.individualCount > 0) >
|
||||||
|
<script>var facultyMemberCount = ${class.individualCount?string?replace(",","")};</script>
|
||||||
|
<#else>
|
||||||
|
<script>var facultyMemberCount = 0;</script>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
<#if !foundClassGroup>
|
||||||
|
<script>var facultyMemberCount = 0;</script>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
||||||
|
|
||||||
|
<#-- builds the "stats" section of the home page, i.e., class group counts -->
|
||||||
|
<#macro allClassGroups classGroups>
|
||||||
|
<#-- Loop through classGroups first so we can account for situations when all class groups are empty -->
|
||||||
|
<#assign selected = 'class="selected" ' />
|
||||||
|
<#assign classGroupList>
|
||||||
|
<#list classGroups as group>
|
||||||
|
<#-- Only display populated class groups -->
|
||||||
|
<#if (group.individualCount > 0)>
|
||||||
|
<#-- Catch the first populated class group. Will be used later as the default selected class group -->
|
||||||
|
<#if !firstPopulatedClassGroup??>
|
||||||
|
<#assign firstPopulatedClassGroup = group />
|
||||||
|
</#if>
|
||||||
|
<#-- Determine the active (selected) group -->
|
||||||
|
<#assign activeGroup = "" />
|
||||||
|
<#if !classGroup??>
|
||||||
|
<#if group_index == 0>
|
||||||
|
<#assign activeGroup = selected />
|
||||||
|
</#if>
|
||||||
|
<#elseif classGroup.uri == group.uri>
|
||||||
|
<#assign activeGroup = selected />
|
||||||
|
</#if>
|
||||||
|
<#if group.displayName != "equipment" && group.displayName != "locations" && group.displayName != "courses" >
|
||||||
|
<li>
|
||||||
|
<a href="#">
|
||||||
|
<p class="stats-count">
|
||||||
|
<#if (group.individualCount > 10000) >
|
||||||
|
<#assign overTen = group.individualCount/1000>
|
||||||
|
${overTen?round}<span>k</span>
|
||||||
|
<#elseif (group.individualCount > 1000)>
|
||||||
|
<#assign underTen = group.individualCount/1000>
|
||||||
|
${underTen?string("0.#")}<span>k</span>
|
||||||
|
<#else>
|
||||||
|
${group.individualCount}<span> </span>
|
||||||
|
</#if>
|
||||||
|
</p>
|
||||||
|
<p class="stats-type">${group.displayName?capitalize}</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</#assign>
|
||||||
|
|
||||||
|
<#-- Display the class group browse only if we have at least one populated class group -->
|
||||||
|
<#if firstPopulatedClassGroup??>
|
||||||
|
${classGroupList}
|
||||||
|
<#else>
|
||||||
|
<h3>There is currently no content in the system, or you need to create class groups and assign your classes to them.</h3>
|
||||||
|
|
||||||
|
<#if user.loggedIn>
|
||||||
|
<#if user.hasSiteAdminAccess>
|
||||||
|
<p>You can <a href="${urls.siteAdmin}" title="Manage content">add content and manage this site</a> from the Site Administration page.</p>
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
<p>Please <a href="${urls.login}" title="log in to manage this site">log in</a> to manage content.</p>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
</#macro>
|
||||||
|
|
||||||
|
<#-- builds the "research" box on the home page -->
|
||||||
|
<#macro researchClasses classGroups=vClassGroups>
|
||||||
|
<#assign foundClassGroup = false />
|
||||||
|
<#list classGroups as group>
|
||||||
|
<#if (group.individualCount > 0) && group.displayName == "research" >
|
||||||
|
<#assign foundClassGroup = true />
|
||||||
|
<#list group.classes as class>
|
||||||
|
<#if (class.name == "Academic Article" || class.name == "Book" || class.name == "Conference Paper" ||class.name == "Media Contribution" || class.name == "Report" || class.name == "Library Collection") && (class.individualCount > 0)>
|
||||||
|
<li role="listitem"><span>${class.individualCount!}</span> <a href='${urls.base}/individuallist?vclassId=${class.uri?replace("#","%23")!}'>${class.name}s</a></li>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
<li><a href="${urls.base}/research" alt="view all research">View all ...</a></li>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
<#if !foundClassGroup>
|
||||||
|
<p><li>No research records found.</li></p>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
||||||
|
|
||||||
|
<#-- builds the "academic departments" box on the home page -->
|
||||||
|
<#macro academicDepartments>
|
||||||
|
<script>
|
||||||
|
var academicDepartments = [
|
||||||
|
<#if academicDeptDG?has_content>
|
||||||
|
<#list academicDeptDG as resultRow>
|
||||||
|
<#assign uri = resultRow["deptURI"] />
|
||||||
|
<#assign label = resultRow["name"] />
|
||||||
|
<#assign localName = uri?substring(uri?last_index_of("/")) />
|
||||||
|
{"uri": "${localName}", "name": "${label}"}<#if (resultRow_has_next)>,</#if>
|
||||||
|
</#list>
|
||||||
|
</#if>
|
||||||
|
];
|
||||||
|
var urlsBase = "${urls.base}";
|
||||||
|
</script>
|
||||||
|
</#macro>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
|
<#-- Template for scripts and css relating to the geographic focus maps on the home page. -->
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="${urls.base}/js/leaflet/dist/leaflet.css" />
|
||||||
|
<!--[if lte IE 8]>
|
||||||
|
<link rel="stylesheet" href="${urls.base}/js/leaflet/dist/leaflet.ie.css" />
|
||||||
|
<![endif]-->
|
||||||
|
<link rel="stylesheet" href="${urls.base}/css/home-page-maps.css" />
|
||||||
|
<script src="${urls.base}/js/leaflet/dist/leaflet.js"></script>
|
||||||
|
<script type="text/javascript" src="${urls.base}/js/latLongJson.js?version=1"></script>
|
||||||
|
<script type="text/javascript" src="${urls.base}/js/homePageMaps.js?version=x"></script>
|
|
@ -0,0 +1,150 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.controller.ajax;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.Integer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
import com.hp.hpl.jena.query.QuerySolution;
|
||||||
|
import com.hp.hpl.jena.query.ResultSet;
|
||||||
|
import com.hp.hpl.jena.rdf.model.RDFNode;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.QueryUtils;
|
||||||
|
|
||||||
|
public class GeoFocusMapLocations extends AbstractAjaxResponder {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(GeoFocusMapLocations.class.getName());
|
||||||
|
private List<Map<String,String>> geoLocations;
|
||||||
|
private static String GEO_FOCUS_QUERY = ""
|
||||||
|
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n"
|
||||||
|
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n"
|
||||||
|
+ "PREFIX core: <http://vivoweb.org/ontology/core#> \n"
|
||||||
|
+ "PREFIX foaf: <http://xmlns.com/foaf/0.1/> \n"
|
||||||
|
+ "PREFIX vivoc: <http://vivo.library.cornell.edu/ns/0.1#> \n"
|
||||||
|
+ "SELECT DISTINCT ?label ?location (COUNT(?person) AS ?count) \n"
|
||||||
|
+ "WHERE { {"
|
||||||
|
+ " ?location rdf:type core:GeographicRegion . \n"
|
||||||
|
+ " ?location rdfs:label ?label . "
|
||||||
|
+ " ?location core:geographicFocusOf ?person . \n"
|
||||||
|
+ " ?person rdf:type foaf:Person \n"
|
||||||
|
+ " FILTER (! regex(str(?location), \"dbpedia\")) \n"
|
||||||
|
+ "} UNION { \n "
|
||||||
|
+ " ?sublocation rdf:type vivoc:DomesticGeographicalRegion . \n"
|
||||||
|
+ " ?sublocation core:geographicFocusOf ?person . \n"
|
||||||
|
+ " ?person rdf:type foaf:Person \n"
|
||||||
|
+ " bind((\"United States of America\"^^<http://www.w3.org/2001/XMLSchema#string>) AS ?label) \n"
|
||||||
|
+ " bind(<http://aims.fao.org/aos/geopolitical.owl#United_States_of_America> AS ?location) \n"
|
||||||
|
+ "} } \n"
|
||||||
|
+ "GROUP BY ?label ?location \n"
|
||||||
|
+ "ORDER BY ?label ?location \n";
|
||||||
|
|
||||||
|
public GeoFocusMapLocations(HttpServlet parent, VitroRequest vreq,
|
||||||
|
HttpServletResponse resp) {
|
||||||
|
super(parent, vreq, resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String prepareResponse() throws IOException, JSONException {
|
||||||
|
try {
|
||||||
|
geoLocations = getGeoLocations(vreq);
|
||||||
|
|
||||||
|
// String response = "{\"type\": \"FeatureCollection\",\"features\": [";
|
||||||
|
String response = "[";
|
||||||
|
String geometry = "{\"geometry\": {\"type\": \"Point\",\"coordinates\": \"\"},";
|
||||||
|
String typeProps = "\"type\": \"Feature\",\"properties\": {\"mapType\": \"\",";
|
||||||
|
String previousLabel = "";
|
||||||
|
|
||||||
|
for (Map<String, String> map: geoLocations) {
|
||||||
|
String label = map.get("label");
|
||||||
|
String html = map.get("count");
|
||||||
|
String uri = UrlBuilder.urlEncode(map.get("location"));
|
||||||
|
Integer count = Integer.parseInt(map.get("count"));
|
||||||
|
String radius = String.valueOf(calculateRadius(count));
|
||||||
|
|
||||||
|
if ( !label.equals(previousLabel) ) {
|
||||||
|
String tempStr = geometry; //+label
|
||||||
|
tempStr += typeProps //+ label
|
||||||
|
+ "\"popupContent\": \""
|
||||||
|
+ label
|
||||||
|
+ "\",\"html\":"
|
||||||
|
+ html
|
||||||
|
+ ",\"radius\":"
|
||||||
|
+ radius
|
||||||
|
+ ",\"uri\": \""
|
||||||
|
+ uri
|
||||||
|
+ "\"}},";
|
||||||
|
response += tempStr;
|
||||||
|
previousLabel = label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response = response.substring(0, response.lastIndexOf(","));
|
||||||
|
response += " ]";
|
||||||
|
log.debug(response);
|
||||||
|
return response;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed geographic focus locations", e);
|
||||||
|
return EMPTY_RESPONSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Map<String,String>> getGeoLocations(VitroRequest vreq) {
|
||||||
|
|
||||||
|
String queryStr = GEO_FOCUS_QUERY;
|
||||||
|
log.debug("queryStr = " + queryStr);
|
||||||
|
List<Map<String,String>> locations = new ArrayList<Map<String,String>>();
|
||||||
|
try {
|
||||||
|
ResultSet results = QueryUtils.getQueryResults(queryStr, vreq);
|
||||||
|
while (results.hasNext()) {
|
||||||
|
QuerySolution soln = results.nextSolution();
|
||||||
|
locations.add(QueryUtils.querySolutionToStringValueMap(soln));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return locations;
|
||||||
|
}
|
||||||
|
private Integer calculateRadius(Integer count) {
|
||||||
|
|
||||||
|
int radius = 8;
|
||||||
|
if ( count != null ) {
|
||||||
|
if ( count < 4 ) {
|
||||||
|
radius = 8;
|
||||||
|
}
|
||||||
|
else if ( count < 7 ) {
|
||||||
|
radius = 10;
|
||||||
|
}
|
||||||
|
else if ( count < 10 ) {
|
||||||
|
radius = 12;
|
||||||
|
}
|
||||||
|
else if ( count < 16 ) {
|
||||||
|
radius = 14;
|
||||||
|
}
|
||||||
|
else if ( count < 21 ) {
|
||||||
|
radius = 16;
|
||||||
|
}
|
||||||
|
else if ( count < 26 ) {
|
||||||
|
radius = 18;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
radius = 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return radius;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.controller.ajax;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the AJAX functions that are specific to the "new" home page sections, at
|
||||||
|
* this point just the mapping of geographic locations.
|
||||||
|
*/
|
||||||
|
public class HomePageAjaxController extends VitroAjaxController {
|
||||||
|
private static final Log log = LogFactory
|
||||||
|
.getLog(HomePageAjaxController.class);
|
||||||
|
|
||||||
|
private static final String PARAMETER_ACTION = "action";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doRequest(VitroRequest vreq, HttpServletResponse resp)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
try {
|
||||||
|
String function = vreq.getParameter(PARAMETER_ACTION);
|
||||||
|
if ("getGeoFocusLocations".equals(function)) {
|
||||||
|
new GeoFocusMapLocations(this, vreq, resp).processRequest();
|
||||||
|
} else {
|
||||||
|
resp.getWriter().write("[]");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e, e);
|
||||||
|
resp.getWriter().write("[]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -594,14 +594,14 @@ ul#main-nav {
|
||||||
width: 930px;
|
width: 930px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
min-height: 700px;
|
min-height: 710px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
/* INTRO-BLURB ------> */
|
/* INTRO-BLURB ------> */
|
||||||
#intro {
|
#intro {
|
||||||
float: left;
|
float: left;
|
||||||
width: 570px;
|
width: 570px;
|
||||||
padding-bottom: 40px;
|
padding-bottom: 50px;
|
||||||
}
|
}
|
||||||
body.loggedIn #intro {
|
body.loggedIn #intro {
|
||||||
width: 98%;
|
width: 98%;
|
||||||
|
@ -909,11 +909,21 @@ a.view-all-style {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* HOME STATS-----> */
|
/* HOME STATS-----> */
|
||||||
#home-stats {
|
.home-sections {
|
||||||
border-top: 1px dotted #dbe3e3; /* stroke */
|
border-top: 1px dotted #dbe3e3; /* stroke */
|
||||||
border-bottom: 1px dotted #dbe3e3; /* stroke */
|
border-bottom: 1px dotted #dbe3e3; /* stroke */
|
||||||
background-color: #fff; /* layer fill content */
|
background-color: #fff; /* layer fill content */
|
||||||
}
|
}
|
||||||
|
.home-sections h4 {
|
||||||
|
border-top: 1px solid rgba(220,228,227,.42); /* stroke */
|
||||||
|
border-bottom: 1px solid rgba(220,228,227,.42); /* stroke */
|
||||||
|
background-color: #395d7f; /* layer fill content */
|
||||||
|
border-bottom: 2px solid #62b6d7;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
#home-stats {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
#home-stats h4 {
|
#home-stats h4 {
|
||||||
border-top: 1px solid rgba(220,228,227,.42); /* stroke */
|
border-top: 1px solid rgba(220,228,227,.42); /* stroke */
|
||||||
border-bottom: 1px solid rgba(220,228,227,.42); /* stroke */
|
border-bottom: 1px solid rgba(220,228,227,.42); /* stroke */
|
||||||
|
@ -941,8 +951,118 @@ a.view-all-style {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
opacity: .5;
|
opacity: .5;
|
||||||
}
|
}
|
||||||
|
#home-research {
|
||||||
|
width: 297px;
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
#home-research h4 {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
#home-research ul {
|
||||||
|
padding: 0.7em 0 0.6em 0.75em;
|
||||||
|
}
|
||||||
|
#home-research li {
|
||||||
|
line-height: 1.25em;
|
||||||
|
margin-top: 0.7em;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
#home-research li:last-child {
|
||||||
|
text-align:right;
|
||||||
|
padding: 4px 16px 0 0;
|
||||||
|
}
|
||||||
|
#home-research li span {
|
||||||
|
color: #fff;
|
||||||
|
background: url(../../../images/count-background.png) no-repeat;
|
||||||
|
width: 65px;
|
||||||
|
height: 27px;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 6px 8px 0 0;
|
||||||
|
margin-left: 4px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#home-academic-depts {
|
||||||
|
width: 297px;
|
||||||
|
margin-left: 15px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
#home-academic-depts h4 {
|
||||||
|
width: 136px;
|
||||||
|
}
|
||||||
|
#home-academic-depts ul {
|
||||||
|
list-style: disc outside url(../../../images/arrowIcon.gif);
|
||||||
|
padding: 0.4em 0 0.6em 1.8em;
|
||||||
|
}
|
||||||
|
#home-academic-depts li {
|
||||||
|
line-height: 1.25em;
|
||||||
|
padding-top: 1.0em;
|
||||||
|
padding-right: 4px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
#home-faculty-mbrs {
|
||||||
|
width: 297px;
|
||||||
|
margin: 0 0 20px 15px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
#home-faculty-mbrs h4 {
|
||||||
|
width: 86px;
|
||||||
|
}
|
||||||
|
div#tempSpacing {
|
||||||
|
height:325px;
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs {
|
||||||
|
font-size: 0.9em;
|
||||||
|
line-height: 16px;
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs li.individual {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs ul li.individual:first-child {
|
||||||
|
clear: both;
|
||||||
|
padding-top: 20px
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs li h1 {
|
||||||
|
padding: 6px 0 2px 0;
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs li img {
|
||||||
|
width: 60px;
|
||||||
|
float: left;
|
||||||
|
padding: 0px 8px 10px 10px;
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs li span.title {
|
||||||
|
display: block;
|
||||||
|
font-size: 0.825em;
|
||||||
|
line-height: 1.25em;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs ul#viewMoreFac {
|
||||||
|
list-style:none;
|
||||||
|
}
|
||||||
|
div#research-faculty-mbrs ul#viewMoreFac li {
|
||||||
|
text-align:right;
|
||||||
|
padding: 0 16px 8px 0;
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
div#adjImgHeight {
|
||||||
|
height:65px;
|
||||||
|
overflow:hidden;
|
||||||
|
float:left;
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
#home-geo-focus {
|
||||||
|
clear: both;
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 10px;
|
||||||
|
height: 632px;
|
||||||
|
width: 921px;
|
||||||
|
}
|
||||||
|
#home-geo-focus h4 {
|
||||||
|
width: 172px;
|
||||||
|
}
|
||||||
|
#home-geo-focus div#timeIndicator {
|
||||||
|
text-align:center;
|
||||||
|
margin-top:100px;
|
||||||
|
}
|
||||||
/* FOOTER------> */
|
/* FOOTER------> */
|
||||||
footer {
|
footer {
|
||||||
clear: both;
|
clear: both;
|
||||||
|
|
|
@ -1,20 +1,36 @@
|
||||||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||||
|
|
||||||
<@widget name="login" include="assets" />
|
<@widget name="login" include="assets" />
|
||||||
|
|
||||||
|
<#--
|
||||||
|
With release 1.6, the home page no longer uses the "browse by" class group/classes display.
|
||||||
|
If you prefer to use the "browse by" display, replace the import statement below with the
|
||||||
|
following include statement:
|
||||||
|
|
||||||
<#include "browse-classgroups.ftl">
|
<#include "browse-classgroups.ftl">
|
||||||
|
|
||||||
|
Also ensure that the homePage.geoFocusMaps flag in the runtime.properties file is commented
|
||||||
|
out.
|
||||||
|
-->
|
||||||
|
<#import "lib-home-page.ftl" as lh>
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<#include "head.ftl">
|
<#include "head.ftl">
|
||||||
|
<#if geoFocusMapsEnabled >
|
||||||
|
<#include "geoFocusMapScripts.ftl">
|
||||||
|
</#if>
|
||||||
|
<script type="text/javascript" src="${urls.base}/js/homePageUtils.js?version=x"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="${bodyClasses!}" onload="${bodyOnload!}">
|
<body class="${bodyClasses!}" onload="${bodyOnload!}">
|
||||||
|
<#-- supplies the faculty count to the js function that generates a random row number for the solr query -->
|
||||||
|
<@lh.facultyMemberCount vClassGroups! />
|
||||||
<#include "identity.ftl">
|
<#include "identity.ftl">
|
||||||
|
|
||||||
<#include "menu.ftl">
|
<#include "menu.ftl">
|
||||||
|
|
||||||
|
|
||||||
<section id="intro" role="region">
|
<section id="intro" role="region">
|
||||||
<h2>Welcome to VIVO</h2>
|
<h2>Welcome to VIVO</h2>
|
||||||
|
|
||||||
|
@ -28,19 +44,16 @@
|
||||||
<legend>Search form</legend>
|
<legend>Search form</legend>
|
||||||
<form id="search-homepage" action="${urls.search}" name="search-home" role="search" method="post" >
|
<form id="search-homepage" action="${urls.search}" name="search-home" role="search" method="post" >
|
||||||
<div id="search-home-field">
|
<div id="search-home-field">
|
||||||
<input type="text" name="querytext" class="search-homepage" value="${querytext!}" autocapitalize="off" />
|
<input type="text" name="querytext" class="search-homepage" value="" autocapitalize="off" />
|
||||||
<input type="submit" value="Search" class="search" />
|
<input type="submit" value="Search" class="search" />
|
||||||
|
<input type="hidden" name="classgroup" class="search-homepage" value="" autocapitalize="off" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a class="filter-search filter-default" href="#" title="Filter search"><span class="displace">filter search</span></a>
|
<a class="filter-search filter-default" href="#" title="Filter search"><span class="displace">filter search</span></a>
|
||||||
|
|
||||||
<ul id="filter-search-nav">
|
<ul id="filter-search-nav">
|
||||||
<li><a class="active" href="">All</a></li>
|
<li><a class="active" href="">All</a></li>
|
||||||
<li><a href="">People</a></li>
|
<@lh.allClassGroupNames vClassGroups! />
|
||||||
<li><a href="">Organizations</a></li>
|
|
||||||
<li><a href="">Research</a></li>
|
|
||||||
<li><a href="">Events</a></li>
|
|
||||||
<li><a href="">Topics</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
@ -50,21 +63,60 @@
|
||||||
|
|
||||||
<@widget name="login" />
|
<@widget name="login" />
|
||||||
|
|
||||||
<#--<@allClassGroups vClassGroups! />-->
|
<section id="home-research" class="home-sections">
|
||||||
|
<h4>Research</h4>
|
||||||
|
<ul>
|
||||||
|
<@lh.researchClasses />
|
||||||
|
|
||||||
<section id="home-stats">
|
</ul>
|
||||||
<h4>Stats</h4>
|
</section>
|
||||||
|
|
||||||
|
<section id="home-faculty-mbrs" class="home-sections" >
|
||||||
|
<h4>Faculty</h4>
|
||||||
|
<div id="tempSpacing"> </div>
|
||||||
|
<div id="research-faculty-mbrs">
|
||||||
|
<!-- populated via an ajax call -->
|
||||||
|
<ul id="facultyThumbs">
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="home-academic-depts" class="home-sections">
|
||||||
|
<h4>Departments</h4>
|
||||||
|
<div id="academic-depts"></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<#if geoFocusMapsEnabled >
|
||||||
|
<section id="home-geo-focus" class="home-sections">
|
||||||
|
<h4>Geographic Focus</h4>
|
||||||
|
<div id="mapControls">
|
||||||
|
<a id="globalLink" class="selected" href="javascript:">Global Research</a> |
|
||||||
|
<a id="usLink" href="javascript:">US Research</a> |
|
||||||
|
<#-- <a id="stateLink" href="javascript:">NY Research</a> -->
|
||||||
|
</div>
|
||||||
|
<div id="researcherTotal"></div>
|
||||||
|
<div id="timeIndicator">
|
||||||
|
<span>Loading map information . . .
|
||||||
|
<img src="${urls.images}/indicatorWhite.gif">
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div id="mapGlobal" class="mapArea"></div>
|
||||||
|
<div id="mapUS" class="mapArea"></div>
|
||||||
|
<div id="mapState" class="mapArea"></div>
|
||||||
|
</section>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<section id="home-stats" class="home-sections" >
|
||||||
|
<h4>Statistics</h4>
|
||||||
|
|
||||||
<ul id="stats">
|
<ul id="stats">
|
||||||
<li><a href="#"><p class="stats-count">19<span>k</span></p><p class="stats-type">People</p></a></li>
|
<@lh.allClassGroups vClassGroups! />
|
||||||
<li><a href="#"><p class="stats-count">128<span>k</span></p><p class="stats-type">Research</p></a></li>
|
|
||||||
<li><a href="#"><p class="stats-count">22<span>k</span></p><p class="stats-type">Organizations</p></a></li>
|
|
||||||
<li><a href="#"><p class="stats-count">29<span>k</span></p><p class="stats-type">Events</p></a></li>
|
|
||||||
<li><a href="#"><p class="stats-count">1.9<span>k</span></p><p class="stats-type">Topics</p></a></li>
|
|
||||||
<li><a href="#"><p class="stats-count">6.5<span>k</span></p><p class="stats-type">Activities</p></a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<#include "footer.ftl">
|
<#include "footer.ftl">
|
||||||
|
<#-- builds a json object that is used by js to render the academic departments section -->
|
||||||
|
<@lh.academicDepartments />
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Add table
Add a link
Reference in a new issue