diff --git a/doc/list_view_configuration_guidelines.txt b/doc/list_view_configuration_guidelines.txt index 13af619b8..550d5397a 100644 --- a/doc/list_view_configuration_guidelines.txt +++ b/doc/list_view_configuration_guidelines.txt @@ -6,9 +6,13 @@ REQUIRED ELEMENTS ----------------- - list-view-config: root element -- query: the sparql query used to retrieve the data +- query-base: sparql query used to retrieve data for an uncollated property +- query-collated: sparql query used to retrieve data for a collated property - template: the name of the template used to display a single property statement +Note: both query-base and query-collated must be included to support the collation checkbox +on the back end Object Property Edit form. + ----------------- OPTIONAL ELEMENTS @@ -22,9 +26,15 @@ OPTIONAL ELEMENTS THE QUERY --------- --------------------------- -General query requirements --------------------------- +----------------- +Construct queries +----------------- + + - forthcoming - + +--------------------------------- +General select query requirements +--------------------------------- - Use a SELECT DISTINCT clause rather than a simple SELECT. There can still be cases where the same individual is retrieved more than once, if there are multiple solutions to the @@ -43,9 +53,6 @@ due to the possibility of incomplete data. Make sure the query does the followin display the local name in the absence of the linked individual. Alternatively, this can be retrieved in the template using the localname(uri) method. -- Each assertion or set of optional assertions must reference a different graph variable, so that -no requirement about which assertions are in the same graph is imposed (unless this is desired -in a specific case). --------------------------- Query for collated property @@ -54,20 +61,16 @@ Query for collated property - Include a ?subclass variable, named as such, in the SELECT clause. If the ?subclass variable is missing, the property will be displayed without collation. -- ?subclass must be the first term in the ORDER BY clause +- ?subclass must be the first term in the ORDER BY clause. - Include the following in the WHERE clause, substituting in the relevant variables for ?infoResource and core:InformationResource: OPTIONAL { GRAPH ?g4 { ?subclass rdfs:subClassOf core:InformationResource } GRAPH ?g5 { ?infoResource a ?subclass } - FILTER (?g5 != <http://vitro.mannlib.cornell.edu/default/inferred-tbox> && - ?g5 != <http://vitro.mannlib.cornell.edu/default/vitro-kb-inf> ) } -The filter blocks the retrieval of inferred type statements, so that, for example, we get -subclass bibo:Book but not bibo:Document, assuming the latter is inferred. If both have been -asserted, we will get both. +- Postprocessing removes all but the most specific subclass value from the query result set. ---------------------- Datetimes in the query diff --git a/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/InfoResponseParser.java b/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/InfoResponseParser.java index 040a616a9..1f3464046 100644 --- a/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/InfoResponseParser.java +++ b/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/InfoResponseParser.java @@ -72,7 +72,7 @@ public class InfoResponseParser { throws Exception { Matcher matcher = pattern.matcher(infoResponse); if (!matcher.find()) { - throw new Exception("no match with '" + pattern + "'."); + throw new Exception("no match with '" + pattern + "'. Is your Subversion client out of date?"); } String value = matcher.group(groupIndex); diff --git a/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/RevisionInfoBuilder.java b/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/RevisionInfoBuilder.java index 59c4d3047..b4d1602c8 100644 --- a/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/RevisionInfoBuilder.java +++ b/utilities/buildutils/revisioninfo/edu/cornell/mannlib/vitro/utilities/revisioninfo/RevisionInfoBuilder.java @@ -70,7 +70,15 @@ public class RevisionInfoBuilder { } String release = assembleReleaseNameFromSubversion(); + if (release == null) { + return null; + } + String revision = obtainRevisionLevelFromSubversion(); + if (revision == null) { + return null; + } + return buildLine(release, revision); } diff --git a/webapp/config/licenser/known_exceptions.txt b/webapp/config/licenser/known_exceptions.txt index 21f3d8522..594711031 100644 --- a/webapp/config/licenser/known_exceptions.txt +++ b/webapp/config/licenser/known_exceptions.txt @@ -159,5 +159,8 @@ webapp/web/js/selectivizr.js # PROBLEM: Can't find any info on licensing. webapp/web/js/jquery_plugins/supersleight.js +# See /doc/3rd-party-licenses.txt for LICENSE file +webapp/web/js/raphael/* + # See /doc/3rd-party-licenses.txt for LICENSE file webapp/web/js/sparql/prototype.js diff --git a/webapp/config/web.xml b/webapp/config/web.xml index 7acfbd433..ff1b6f32c 100644 --- a/webapp/config/web.xml +++ b/webapp/config/web.xml @@ -171,7 +171,7 @@ - edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache + edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache$Setup - - - - - - PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> - PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> - - SELECT ?subclass ?object ?name ?moniker { - GRAPH ?g1 { ?subject ?property ?object } - OPTIONAL { GRAPH ?g2 { ?object rdfs:label ?name } } - OPTIONAL { GRAPH ?g3 { ?object vitro:moniker ?moniker } } - OPTIONAL { GRAPH ?g4 { ?object a ?subclass } - FILTER (?g4 != <http://vitro.mannlib.cornell.edu/default/inferred-tbox> && - ?g4 != <http://vitro.mannlib.cornell.edu/default/vitro-kb-inf> ) - } - } - - - edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.DefaultListViewDataPostProcessor - - - diff --git a/webapp/web/config/listViewConfig-default-uncollated.xml b/webapp/web/config/listViewConfig-default-uncollated.xml deleted file mode 100644 index e9c5ff27d..000000000 --- a/webapp/web/config/listViewConfig-default-uncollated.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> - PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> - - SELECT ?object ?name ?moniker { - GRAPH ?g1 { ?subject ?property ?object } - OPTIONAL { GRAPH ?g2 { ?object rdfs:label ?name } } - OPTIONAL { GRAPH ?g3 { ?object vitro:moniker ?moniker } } - } - - - edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.DefaultListViewDataPostProcessor - - - diff --git a/webapp/web/config/listViewConfig-default.xml b/webapp/web/config/listViewConfig-default.xml new file mode 100644 index 000000000..1cc38e5e5 --- /dev/null +++ b/webapp/web/config/listViewConfig-default.xml @@ -0,0 +1,65 @@ + + + + + + + + PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> + PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + + SELECT ?object ?name ?moniker WHERE { + ?subject ?property ?object + OPTIONAL { ?object rdfs:label ?name } + OPTIONAL { ?object vitro:moniker ?moniker } + } ORDER BY ?name ?object + + + + PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> + PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#> + + SELECT ?subclass ?object ?name ?moniker { + ?subject ?property ?object + OPTIONAL { ?object a ?subclass } + OPTIONAL { ?object rdfs:label ?name } + OPTIONAL { ?object vitro:moniker ?moniker } + FILTER ( afn:namespace(?subclass) != "http://vitro.mannlib.cornell.edu/ns/vitro/0.7#" ) + } ORDER BY ?subclass ?name ?object + + + + PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> + PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + + CONSTRUCT { + ?subject ?property ?object . + ?object a ?subclass . + ?object rdfs:label ?name . + ?object vitro:moniker ?moniker + } WHERE { + { + ?subject ?property ?object + } + UNION { + ?subject ?property ?object . + ?object a ?subclass . + } + UNION { + ?subject ?property ?object . + ?object rdfs:label ?name . + } + UNION { + ?subject ?property ?object . + ?object vitro:moniker ?moniker . + } + } + + + edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.DefaultListViewDataPostProcessor + + + diff --git a/webapp/web/config/listViewConfig-vitroLink.xml b/webapp/web/config/listViewConfig-vitroLink.xml index 2a2bdee3f..b77c8c947 100644 --- a/webapp/web/config/listViewConfig-vitroLink.xml +++ b/webapp/web/config/listViewConfig-vitroLink.xml @@ -6,17 +6,33 @@ See guidelines in vitro/doc/list_view_configuration_guidelines.txt --> - + PREFIX vitro: <http://vitro.mannlib.cornell.edu/ns/vitro/0.7#> PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#> - SELECT ?link (afn:localname(?link) AS ?linkName) ?anchor ?url WHERE { - GRAPH ?g1 { ?subject ?property ?link } - OPTIONAL { GRAPH ?g2 { ?link vitro:linkAnchor ?anchor } } - OPTIONAL { GRAPH ?g3 { ?link vitro:linkURL ?url } } - OPTIONAL { GRAPH ?g4 { ?link vitro:linkDisplayRank ?rank } } + SELECT ?link + (afn:localname(?link) AS ?linkName) + ?anchor + ?url WHERE { + ?subject ?property ?link + OPTIONAL { ?link vitro:linkAnchor ?anchor } + OPTIONAL { ?link vitro:linkURL ?url } + OPTIONAL { ?link vitro:linkDisplayRank ?rank } } ORDER BY ?rank - + + + + CONSTRUCT { + ?subject ?property ?link . + ?link ?linkProp ?linkObj + } WHERE { + { ?subject ?property ?link } + UNION { + ?subject ?property ?link . + ?link ?linkProp ?linkObj + } + } + diff --git a/webapp/web/css/admin.css b/webapp/web/css/admin.css index efde613d4..4eb37825f 100644 --- a/webapp/web/css/admin.css +++ b/webapp/web/css/admin.css @@ -1,46 +1,40 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ -/*** Admin Dashboard ***/ +/* Admin Dashboard */ #adminDashboard { - margin-top: 1em; - display: inline-block; - width: 100%; + margin-top: 1em; + display: inline-block; + width: 100%; } - #adminDashboard .pageBodyGroup { - float: left; - clear: right; - display: inline-block; - width: 45%; - margin-top: 2em; - margin-bottom: 1em; - padding: 0 1em; + float: left; + clear: right; + display: inline-block; + width: 45%; + margin-top: 2em; + margin-bottom: 1em; + padding: 0 1em; } - #adminDashboard .pageBodyGroup h4 { - margin: 0; - padding: 0; + margin: 0; + padding: 0; + color: #666; } - #adminDashboard .pageBodyGroup h3 { - background-color: #efefef; - color: #000; - padding: 5px; + background-color: #efefef; + color: #000; + padding: 5px; } - #adminDashboard .pageBodyGroup ul { - margin: 0 0 1em 0.3em; + margin: 0 0 1em 0.3em; } - #adminDashboard .pageBodyGroup li { - list-style-type: none; + list-style-type: none; } - #adminDashboard #verbosePropertyForm { margin-top: 3em; } - #adminDashboard .add-action-button { margin-top: .75em; } \ No newline at end of file diff --git a/webapp/web/css/browseClassGroups.css b/webapp/web/css/browseClassGroups.css new file mode 100644 index 000000000..f428ec627 --- /dev/null +++ b/webapp/web/css/browseClassGroups.css @@ -0,0 +1,128 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +/* Styles used for class group browse (browse-classgroups.ftl) */ + +#browse { + clear: both; + width: 920px; + margin: 0 auto; + border: 1px solid #dfe6e6; + background: #f7f9f9; + overflow: hidden; + padding-bottom: 30px; +} +#browse h4 { + width: 13%; + height: 30px; + margin-bottom: 27px; + padding-left: 15px; + font-weight: normal; + line-height: 38px; + color: #fff; + background: #5e6363; + font-size: 20px; +} +/* BROWSE CLASS GROUPS ------> */ +ul#browse-classgroups { + float: left; + width: 200px; + border: 1px solid #dde4e3; + border-right: none; + background: #f1f2ee; + margin-left: 34px; + padding: 0 20px 23px 20px; + margin-top: 10px; + padding-top: 10px; +} +ul#browse-classgroups li { + display: block; + border-bottom: 1px solid #dde4e3; + font-size: 18px; + width: 200px; + height: 35px; + line-height: 35px; +} +ul#browse-classgroups li:last-child { + border-bottom: none +} +ul#browse-classgroups a { + display: block; + padding-left: 15px; + width: 200px; + height: 35px; + color: #5e6363; + text-decoration: none; +} +ul#browse-classgroups .count-classes { + font-size: 14px +} +/* BROWSE CLASSES IN CLASS GROUP ------> */ +#browse-classes { + float: left; + position: relative; + width: 610px; + border: 1px solid #dde6e5; + background: #fff; + min-height: 230px; +} +a.browse-superclass { + position: absolute; + right: 0.5em; + font-size: 0.9em; +} +ul#classes-in-classgroup { + float: left; + width: 90%; + padding: 0 10px 15px 22px; + margin-top: 20px; + margin-bottom: 10px; +} +ul#classes-in-classgroup.vis { + width: 44%; + border-right: 1px solid #DDE5E4; +} +ul#classes-in-classgroup li { + display: block; + float: left; + width: 100%; + border-bottom: 1px solid #dde4e3; + font-size: 14px; + height: 35px; + line-height: 35px; +} +ul#classes-in-classgroup li:last-child { + border-bottom: none +} +ul#classes-in-classgroup a { + display: block; + padding-left: 15px; + height: 35px; + color: #5e6363; + text-decoration: none; +} +ul#classes-in-classgroup .count-individuals { + font-size: 12px; +} +/* VISUALIZATION ------> */ +#visual-graph { + float: left; + width: 308px; +} +#visual-graph h5 { + padding: 20px 0 12px 12px; + width: auto; + font-size: 18px; + font-weight: normal; +} +#pieViz { + width: 308px; + height: 308px; +} +svg text { + font-family: inherit !important; + font-size: 12px !important; + color: #5E6363 !important; +} +svg rect { + cursor: pointer; +} \ No newline at end of file diff --git a/webapp/web/css/browseIndex.css b/webapp/web/css/browseIndex.css index 15a6965d9..47fc0f716 100644 --- a/webapp/web/css/browseIndex.css +++ b/webapp/web/css/browseIndex.css @@ -1,45 +1,47 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ + /* browseIndex.css contains styles used in the Index pages. */ /* INDIVIDUAL LIST ------> */ -.individualList ul.individualData li{ +.individualList ul.individualData li { padding-bottom: 0; + display: inline; + padding-right: .3em; } .pagination { display: inline-block; } -.pagination li{ +.pagination li { display: inline-block; padding-right: 2px; } -.pagination li.selectedNavPage{ +.pagination li.selectedNavPage { font-size: 1em; } .rdfLink { - font-size: 0.8em; -} -.individualList a.externalLink { - text-decoration: none; - font-weight: normal; + padding-left: .5em; + font-size: .8em; + border-left: 1px solid #a6b1b0; } .individualList ul.individualData { display: inline; -} -.individualList ul.individualData li { - display: inline; - padding-right: .3em; - padding-bottom:1.2em; + padding: 0.2em 0.4em; + font-size: 0.8em; + background: #f7f7f7; } .individualList ul.individualData li.last { border: none; } +.individualList a.externalLink { + font-weight: normal; +} .individualList ul { - margin-left: 0; + margin-left: 0; } .individualList li { list-style-type: none; margin-bottom: .5em; - } +} .individualList li a { font-weight: normal; } \ No newline at end of file diff --git a/webapp/web/css/dump.css b/webapp/web/css/dump.css index fa1b5ba5d..d81e26e02 100644 --- a/webapp/web/css/dump.css +++ b/webapp/web/css/dump.css @@ -8,21 +8,18 @@ padding: 1em 0; margin: 1em 0; } - .dump li { list-style-type: none; } - .dump.directive h6 { margin-top: 1em; } - -.dump.datamodel .var, .dump.datamodel .directive { +.dump.datamodel .var, +.dump.datamodel .directive { border-bottom: 1px solid #ccc; padding: 1em 0; margin: 1em 0; } - .dump .var p { margin-bottom: .3em; -} +} \ No newline at end of file diff --git a/webapp/web/css/edit.css b/webapp/web/css/edit.css index afc94d24f..be8ae20ba 100644 --- a/webapp/web/css/edit.css +++ b/webapp/web/css/edit.css @@ -1,18 +1,24 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ -label{ +label { display: block; margin-top: .5em; } -textarea{ +label.inline { + display: inline; + font-weight: normal; +} +input.block { + display: block; +} +textarea { margin-bottom: 1.5em; } -/* mb863-reference: vivo-basic/css/formedit.css*/ form { padding-bottom: 20px; } .form p { - margin-bottom:0.5em; + margin-bottom: .5em; } form textarea { width: 60%; @@ -25,7 +31,7 @@ form a:hover.cancel, form a:active.cancel { color: #fff; background: #f70; } -form select option{ +form select option { padding-right: 5px; } form dl { @@ -48,7 +54,6 @@ p.submit { clear: left; margin-top: 2em; } -/* mb863-reference:vivo-basic/css/edit.css*/ .buttonForm { margin-top: 0; margin-bottom: 0; @@ -68,7 +73,7 @@ p.submit { padding-bottom: 1em; color: #444444; line-height: 16px; - background-color: #eee; /* cals+vivo themes were: #dddddd; */ + background-color: #fff min-height: 100px; font-size: 0.9em; } @@ -76,10 +81,10 @@ p.submit { text-align: left; border-width: 1px; border-style: solid; - border-color: black; + border-color: #000; border-collapse: separate; } -.editingForm td{ +.editingForm td { padding: 2px 2px 2px 2px; font-size: 1em; } @@ -93,20 +98,20 @@ td.verticalfieldlabel { background-color: #f8f8c8; border-width: 1px; border-style: solid; - border-color: black; + border-color: #000; } -.editingForm .entryFormHead h2{ +.editingForm .entryFormHead h2 { margin: 0.1em; padding : 0em; font-size: 1.4em; - color: black; + color: #000; } -.editingForm .entryFormHead h3{ +.editingForm .entryFormHead h3 { margin: 0.1em; padding: 0; font-size: 1.2em; font-weight: 600; /* cals theme was: 650 */ - color: red; + color: #f00; } .editingForm .entryFormHead .entryFormHeadInstructions { margin: 0em; @@ -120,7 +125,7 @@ td.verticalfieldlabel { font-size: 10px; border-width: 1px; } -.editingForm .form-button{ +.editingForm .form-button { font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 1em; margin-top: 2px; @@ -170,7 +175,7 @@ table.form-background td form { background-color: #E05550; } .form-background.property { - background-color : #A8F0A0; + background-color: #A8F0A0; } .form-table-head { background-color: #ccf; @@ -181,13 +186,13 @@ table.form-background td form { margin-top: 2px; } .navlinkblock { - color: #000; /*#4B0082;*/ + color: #000; font-family: Verdana,Arial, Helvetica, sans-serif; font-size: 10px; font-weight: normal; margin-top: 1px; margin-bottom: 1px; - padding-top : 1px; + padding-top: 1px; padding-bottom: 4px; } td.editformcell { @@ -230,7 +235,7 @@ td.editformcell select { } .rownumheader { background-color: #B0C4DE; - color: black; + color: #000; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; font-style: normal; @@ -238,7 +243,7 @@ td.editformcell select { } .headercenter { background-color: #9370DB; - color: black; + color: #000; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; font-style: normal; @@ -247,7 +252,7 @@ td.editformcell select { .postheader { background-color: #E6E6FA; color: #777; - font-family:; Arial, Helvetica, sans-serif; + font-family: Arial, Helvetica, sans-serif; font-size: 10pt; font-style: normal; text-align: left; @@ -330,6 +335,14 @@ div.sparqlform label { display: inline; font-weight: normal; } +div.sparqlform div { + margin-bottom: 1.5em; +} +div.sparqlform .parenthetical { + font-style: italic; + margin-top: 0; + margin-bottom: .25em; +} /* Temporary hack to remove stuff from forms in vivoweb only */ .hideFromVivoWeb { display: none; diff --git a/webapp/web/css/individual/individual.css b/webapp/web/css/individual/individual.css index d1a4ab87b..44ca68d1f 100644 --- a/webapp/web/css/individual/individual.css +++ b/webapp/web/css/individual/individual.css @@ -1,287 +1,237 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ -@charset "UTF-8"; -/* CSS Document */ - /* ADMIN PANEL------> */ -div.admin{ - color: #fff; - background: #aaa; - padding: 6px; - height: 1%; /* IE likes this */ - width: 98%; /* and this */ +#admin { + font-size: .8em; + padding-top: 0; + padding-right: 40px; } -div.panelContents{ - color: #777; - background: #efebe6; -/*display: none;*/ - padding: 12px; +#admin h3 { + display: inline-block; + padding: 3px 6px 3px 10px; + margin-bottom: 5px; + font-size: 14px; } -div.top{ - margin: 0; - padding: 0 24px 0 0; - background: #efebe6; +#admin .uri-link { + padding-left: 11px; + padding-bottom: 5px; } -div.bottom{ - margin: 0 -12px; - position: relative; - bottom: -16px; - padding: 6px 12px 8px 12px; -} -.admin h3{ - font-size: 1em; - text-transform: uppercase; - font-weight: bold; - color: #ddd; - background: #aaa; - line-height: 2em; - margin: 0 !important; /* fix for IE6 */ - margin-right: -24px; - padding: 0 12px; - width: 100% !important; /* fix for IE6 */ - width: auto; -} -.admin p{ - margin-bottom: .25em; -} -.admin a:link, -.admin a:visited{ - color: #fff; -} -.panelContents a:link, -.panelContents a:visited{ - color: #777; -} -.admin a:hover, -.admin a:active { - color: #000; -} -#loginPanel ul { - margin: 0; -} -#loginPanel li { - list-style-type: none; - margin-bottom: .5em; +#admin a.edit-individual { + padding-left: 5px; + border-left: none; } /* <------ INDIVIDUAL INTRO FOR ANY CLASS*/ -#individual-intro{ - float: left; - width: 75%; - margin-top: 35px; - margin-bottom: 45px; +#individual-intro { + margin-top: 15px; + margin-bottom: 20px; + position: relative; + overflow: hidden; } -#individual-intro h1{ - padding-bottom: 24px; +#individual-intro h1 { + padding-bottom: 8px; } -#individual-intro span.preferred-title{ +#individual-intro span.preferred-title { padding-left: 10px; margin-left: 10px; } -/* <------ INDIVIDUAL INTRO FOR PERSON*/ -#individual-intro-person{ - float: left; - width: 75%; - margin-top: 0.5em; - margin-bottom: 30px; +#individual-info h3 { + padding-bottom: 5px; + margin-top: 5px; + clear: left; } -/* <------ INDIVIDUAL INTRO LEFT CONTENT */ -#share-contact{ +#individual-intro a.icon-rdf { + font-size: 1.125em; +} +ul#links-additional{ + margin-bottom: 5px; +} +/* <------ INDIVIDUAL INTRO FOR PERSON*/ +#individual-intro.person { + margin-bottom: 30px; + position: relative; + width: 100%; +} +#individual-intro.person #individual-info { + float: left; + width: 78%; + margin-bottom: 20px; +} +#individual-intro.person .individual-overview { + width: 100%; + float: none; +} +/* <------ INDIVIDUAL INTRO - LEFT SIDE CONTENT */ +#share-contact { + position: relative; width: 166px; float: left; - padding-left: 0.5em; padding-right: 1.5em; + margin-bottom: 20px; } -#share-contact h3{ +#share-contact h3 { margin-top: 15px; - padding-bottom: 0; - line-height: .6em; + padding-bottom: .3em; + font-size: 1em; + line-height: 1.2em; + padding-top: 0; } -#share-contact img.individual-photo2{ +img.individual-photo { width: 160px; - height: 160px; + margin-left: 0; float: left; + margin-right: 20px; + margin-bottom: 20px; } -ul#individual-tools-people{ +#mainImage { + position: absolute; + padding: 5px 5px 8px 5px; + background-color: #fff; + top: 6px; + left: 6px; +} +h2#mainImage, #share-contact h2 { + font-size: 1em; + line-height: 1em; + padding-bottom: 0.3em +} +ul#individual-tools-people { margin-top: 5px; - height: 27px; + height: 20px; padding-bottom: 20px; list-style-type: none; clear: both; -} -ul#individual-tools-people li{ - position: relative; - display: block; - padding-right: 14px; - float: left; -} -ul#individual-tools{ - margin-top: -18px; /*not good adding negative margin*/ - height: 38px; - overflow: hidden; - float: left; - width: 150px; - color: #8AA149 -} -ul#individual-tools li{ - position: relative; - display: block; - padding-right: 14px; - float: left; - line-height: 27px; -} -.icon-rdf{ - position: absolute; - font-size: 1.125em; - top: 13px; -} -ul#individual-email{ - clear: both; - list-style-type: circle; -} -ul#individual-email li{ - font-size: .875em; -} -ul#individual-email li:first-child{ - font-size: .875em; - margin-top: 10px; -} -ul#individual-phone{ - clear: both; - list-style-type: circle; -} -ul#individual-phone li{ - font-size: .875em; -} -ul#individual-phone li:last-child{ margin-bottom: 15px; } -ul#individual-phone li:first-child{ +ul#individual-tools-people li { + position: relative; + display: block; + padding-right: 7px; + float: left; + margin-bottom: 20px; +} +ul#individual-tools { + margin-top: 10px; + margin-bottom: 10px; + height: 20px; + list-style-type: none; +} +ul#individual-tools li { + padding-right: 9px; + float: left; +} +ul#individual-email { + clear: both; + list-style-type: circle; +} +ul#individual-email li { + font-size: .875em; +} +ul#individual-email li:first-child { + font-size: .875em; margin-top: 10px; } -.icon-phone, .icon-email{ +ul#individual-phone { + clear: both; + list-style-type: circle; +} +ul#individual-phone li { + font-size: .875em; +} +ul#individual-phone li:last-child { + margin-bottom: 15px; +} +ul#individual-phone li:first-child { + margin-top: 10px; +} +.icon-phone, .icon-email { padding-right: 5px; } -ul.individual-urls{ +#individual-intro ul.individual-urls { list-style-type: circle; - margin-left: 10px; - float: left; - margin-bottom: 30px; + margin-left: 20px; } -ul.individual-urls li{ +#individual-intro ul.individual-urls li { font-size: .875em; - line-height: 1.2em; + line-height: 1.7em; } -ul.individual-urls li a{ - color: #2485ae; -} -ul.individual-urls-people{ +ul.individual-urls-people { clear: both; - margin-top: 20px; - list-style: none; list-style-type: circle; padding-left: 24px; } -ul.individual-urls-people li{ +ul.individual-urls-people li { font-size: .875em; - line-height: 1.2em; + line-height: 1.3em; } -/* <------ INDIVIDUAL RIGHT CONTENT */ -#individual-info{ - width: 69%; +#photo-wrapper { + position: relative; float: left; - padding: 10px 0 0 10px; } -#individual-info h1.fn{ - padding-bottom: 12px; +/* <------ INDIVIDUAL INTRO - RIGHT SIDE CONTENT */ +#individual-info { + padding: 0; + float: left; + width: 98%; +} +#individual-info.withThumb { + width: 78%; } h1.fn .preferred-title { padding-left: 10px; margin-left: 10px; } -#individual-info h2{ +#individual-info h2 { padding-bottom: 10px; } -ul#individual-positions{ - padding-bottom: 24px; - list-style: none; - list-style-type: circle; - padding-left: 20px; -} -ul#individual-positions li{ - line-height: 1em; -} -.individual-overview{ - font-size: 1em; - padding-bottom: 0; - line-height: 1.3em; -} -ul#individual-areas{ - padding-bottom: 24px; -} -ul#individual-areas li{ +#individual-info nav { float: left; - padding-right: 10px; - padding-left: 10px; + width: 78%; + clear: left; } -ul#individual-areas li:first-child{ - padding-left: 0; -} -ul#individual-areas li{ - float:left; - border-right: 1px solid #5e6363; - padding-right: 10px; - padding-left: 10px; +#individual-intro .individual-overview { + margin-bottom: 30px; + margin-top: 10px; + display: inline; + clear: both; + float: left; } /* <------ INDIVIDUAL VISUALIZATION */ -#publications-visualization{ - margin-top: 35px; +#visualization { + padding: 0 0 40px 30px; + padding-top: 0; float: right; - width: 226px; + background-color: #fff; } -/* <------ SPARKLINES */ -#sparklines-publications{ - width: 220px; - padding: 0 20px 45px 20px; -} -#sparklines-publications h3{ +#visualization h3 { padding-top: 10px; margin-bottom: 10px; } -.publication-year-range{ +.publication-year-range { display: block; padding-top: 5px; } -/* <------ TEMPORAL GRAPH */ -#temporal-graph{ - width: 220px; - padding: 0 20px 45px 20px; -} -#temporal-graph h3 img{ - padding-right: 10px; - vertical-align: text-top; -} /* <------ COAUTHORS */ -#co-authors{ +#co-authors { padding: 0 20px 30px 20px; } -img.co-author{ +img.co-author { margin-right: 5px; margin-bottom: 5px; } -#co-authors h3{ +#co-authors h3 { margin-bottom: 10px; } -#co-authors ul li{ +#co-authors ul li { display: block; float: left; } -p.view-all-coauthors{ +p.view-all-coauthors { clear: both; width: 200px; text-align: left; } /* PROPERTY GROUP MENU------> */ -#property-group-menu{ +#property-group-menu { clear: both; width: 95%;; height: 46px; @@ -290,21 +240,21 @@ p.view-all-coauthors{ margin-bottom: 10px; margin-top: 20px; } -#property-group-menu ul{ +#property-group-menu ul { display: block; - color: #5e6363; + list-style-type: none; } -#property-group-menu li{ +#property-group-menu li { float: left; line-height: 46px; padding-right: 15px; padding-left: 15px; } -#property-group-menu li:first-child{ +#property-group-menu li:first-child { padding-left: 10px; } /* PROPERTY GROUP------> */ -.property-group{ +.property-group { position: relative; clear: both; width: 95%; @@ -313,68 +263,94 @@ p.view-all-coauthors{ margin-bottom: 20px; border: 1px solid #dfebe5; } -.scroll-up{ +.scroll-up { position: absolute; width: 21px; height: 30px; top: 0; right: -21px; } -section.property-group h2{ +section.property-group h2 { padding: 20px 25px 12px 35px; } -article.property{ +article.property { width: 93%; margin: 0 auto; margin-bottom: 20px; border: 1px solid #dfe6e5; } -article.property h3{ +article.property h3 { border-bottom: 1px solid #dfe6e5; padding: 10px 20px 10px 20px; } article.property ul.property-list li.subclass h3 { border-bottom: none; padding: 10px 10px 10px 0; + background-color: #fff; + margin-bottom: 0; } -article.property .data-property-statement{ +article.property .data-property-statement { padding: 10px 20px 10px 20px; line-height: 1.2em; margin-bottom: 0; } -article.property ul.property-list{ +article.property ul.property-list { background: #fff; padding-bottom: 20px; + list-style-type: none; } -article.property ul.property-list li{ +article.property ul.property-list li { line-height: 1.2em; padding: 10px 20px 5px 20px; + background-color: #fff; } -article.property ul.subclass-property-list{ +article.property ul.subclass-property-list { margin-left: 0; + list-style-position: inside; } -article.property ul.subclass-property-list li{ +article.property ul.subclass-property-list li { line-height: 1.2em; padding: 0 20px 10px 20px; } +/* EDITING DISPLAY------> */ +.add-individual { + vertical-align: middle; + margin-left: 2px; +} +.edit-individual { + margin-left: 10px; + padding-left: 8px; + padding-right: 1px; + vertical-align: middle; +} +.delete-individual { + vertical-align: middle; +} +.edit-mainImage { + position: absolute; + background: #fff; + padding: 0 6px 0 0; + top: 6px; + left: 6px; +} +a.edit-mainImage img.edit-individual { + border: 0; + padding-left: 0px; + margin-left: 8px; +} +.delete-mainImage { + position: absolute; + top: 6px; + left: 36px; + background: #fff; + padding: 0 6px 0 8px; +} +.middle { + vertical-align: middle; +} /* MISCELLANEOUS------> */ .listDateTime { padding: 0.2em 0.4em; font-size: 0.8em; background: #f4f4f4; -} -/* EDITING DISPLAY------> */ -.add-individual{ - vertical-align: middle; - margin-left: 2px; -} -.edit-individual{ - border-left: 1px dotted #B2D15A; - margin-left: 10px; - padding-left: 8px; - padding-right: 1px; - vertical-align: middle; -} -.delete-individual{ - vertical-align: middle; } \ No newline at end of file diff --git a/webapp/web/css/login.css b/webapp/web/css/login.css index d3ac9faa4..d7d51f07a 100644 --- a/webapp/web/css/login.css +++ b/webapp/web/css/login.css @@ -5,10 +5,10 @@ #login-form label, #login-form input.text, #login-form #password, -#login-form #confirmPassword{ +#login-form #confirmPassword { display: block; } -#login-form label.label-remember-me{ +#login-form label.label-remember-me { display: block; } #login-form p.submit { @@ -44,7 +44,7 @@ p.request-account { margin-top: 1em; text-align: center; } -.or-auth{ +.or-auth { margin-left: 135px; width: 30px; height: 30px; @@ -55,7 +55,7 @@ p.request-account { color: #fff; font-size: .8em; } -h3.internal-auth{ +h3.internal-auth { margin-left: 38px; color: #5F6464; font-size: 1em; diff --git a/webapp/web/css/menupage/menupage.css b/webapp/web/css/menupage/menupage.css index 08922967a..d1dacd72e 100644 --- a/webapp/web/css/menupage/menupage.css +++ b/webapp/web/css/menupage/menupage.css @@ -1,146 +1,98 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ -@charset "UTF-8"; -/* CSS Document */ - -/* VISUAL GRAPH FOAF:PERSON------> */ -#intro-menupage{ +/* VISUAL GRAPH-----> */ +#menupage-intro { clear: both; width: 100%; margin: 1em auto; -/* padding-top: 30px; nac26: not sure we need all this space up top*/ -/* margin-bottom: 30px;*/ } -#intro-menupage h3{ - padding: 0 25px 15px 0; - padding-bottom: 20px; +#menupage-intro h2 { + padding: 0 25px 20px 0; } -#content-foaf-person{ - float: left; - width: 64%; - margin-bottom: 30px; -} -#content-foaf-person h4{ - padding: 20px 25px 12px 0; -} -ul#foaf-person-childClasses{ - float: left; - width: 265px; - margin-left: 45px; -} -ul#foaf-person-childClasses li{ - display: block; - height: 35px; - line-height: 35px; -} -ul#foaf-person-childClasses li:last-child{ - border-bottom: 0; -} -ul#foaf-person-childClasses a{ - display: block; - padding-left: 15px; - width: 265px; - height: 35px; -} -#foaf-person-graph{ - float: right; - width: 270px; - height: 270px; -} -/* VISUAL GRAPH CLASS:GENERIC (ORGANIZATION, RESEARCH, EVENT) ------> */ -#content-generic-class{ +#menupage-content { float: left; width: 90%; margin-bottom: 30px; } -#content-generic-class h3{ +#menupage-content.people { + width: 73%; +} +#menupage-content h3 { padding: 0 25px 15px 0; } -#content-generic-class h4{ +#menupage-content h4 { padding: 20px 25px 12px 0; } -ul#vgraph-childClasses{ +ul#vgraph-classes { float: left; width: 265px; margin-left: 35px; } -ul#vgraph-childClasses li{ +ul#vgraph-classes li { display: block; height: 35px; line-height: 35px; } -ul#vgraph-childClasses li:last-child{ +ul#vgraph-classes li:last-child { border-bottom: 0; } -ul#vgraph-childClasses a{ +ul#vgraph-classes a { display: block; padding-left: 15px; width: 265px; height: 35px; } -#generic-class-graph{ +#menupage-graph { float: right; width: 500px; height: 283px; padding-right: 20px; + border: 1px dotted #ccc; +} +#menupage-graph.people { + width: 300px; + height: 360px; + padding-right: 0; + border: none; + margin-top: -40px; } /* FIND BY ------> */ -#find-by{ - width: 275px; +#find-by { float: right; - margin-top: 20px; + margin: 0 1.1em 1.5em 0; + padding: 8px 8px 3px 5px; } -#find-by h3{ - padding: 0 25px 12px 12px; +#find-by h3 { + padding: 0 .2em .2em .8em; border-bottom: 0; -} -ul#find-filters{ float: left; - width: 265px; } -ul#find-filters li{ - display: block; - height: 35px; - line-height: 35px; - padding-left: 10px; +ul#find-filters { + float: right; } -ul#find-filters li:last-child{ +ul#find-filters li { + float: left; + padding-left: 3px; + padding-right: 15px; + border-right: 1px solid #E4EAE9; +} +ul#find-filters li:last-child { border-bottom: 0; + border-right: none; } -ul#find-filters a{ +ul#find-filters a { display: block; - padding-left: 15px; - width: 265px; - height: 35px; -} -/* NETWORK STATS ------> */ -#network-stats{ - clear: both; - width: 90%; - margin: 0 auto; - height: 67px; - margin-bottom: 30px; -} -#network-stats h3{ - float: left; - width: 150px; - padding: 20px 12px 10px 12px; -} -#network-stats p{ - padding: 15px 15px 15px 175px; - font-size: .875em; - line-height: 1.5em; - color: #5e6363; + padding-left: 13px; } /* RESEARCHERS ------> */ -#researchers{ +#researchers { clear: both; width: 90%; height: 229px; margin: 0 auto; margin-top: 30px; } -#researchers h3{ +#researchers h3 { float: left; width: 150px; padding: 20px 12px 10px 12px; @@ -149,65 +101,64 @@ ul#find-filters a{ font-weight: normal; background: url(../images/arrow.gif) 140px 27px no-repeat; } -#researchers p{ +#researchers p { padding: 17px 15px 15px 175px; line-height: 1.5em; } -#researchers-slider{ +#researchers-slider { clear: both; margin: 0 auto; width: 887px; height: 115px; } -#alpha-display{ +#alpha-display { width: 100px; height: 115px; line-height: 115px; float: left; margin-right: 10px; } -#profile-photo-display{ +#profile-photo-display { width: 60%; height: 115px; float: left; } -#profile-photo-display ul{ +#profile-photo-display ul { display: block; } -#profile-photo-display li{ +#profile-photo-display li { display: block; width: 90px; float: left; padding-right: 10px; padding-top: 10px; } -#nav-display{ +#nav-display { width: 100px; height: 70px; margin-top: 30px; margin-right: 20px; float: right; } -#nav-display p{ +#nav-display p { float: left; padding: 0; padding-top: 7px; width: 30px; } -#nav-display img{ +#nav-display img { display: block; float: right; padding-left: 15px; } /* BROWSE BY ------> */ -#browse-by{ +#browse-by { clear: both; width: 90%; margin: 0 auto; - margin-top: 40px; overflow: hidden; } -#browse-by h2{ +#browse-by h2 { width: 120px; height: 44px; line-height: 44px; @@ -215,44 +166,45 @@ ul#find-filters a{ margin-bottom: 27px; } /* BROWSE CLASSES ------> */ -ul#browse-childClasses{ +ul#browse-classes { float: left; width: 255px; margin-left: 15px; margin-bottom: 20px; + margin-top: 10px; } -ul#browse-childClasses li{ +ul#browse-classes li { display: block; - width: 264px; - height: 35px; - line-height: 35px; + width: 235px; margin-left: 10px; margin-right: 10px; + padding-top: 10px; + padding-bottom: 10px; } -ul#browse-childClasses li:last-child{ +ul#browse-classes li:last-child { border-bottom: 0; } -ul#browse-childClasses a{ +ul#browse-classes a { display: block; padding-left: 20px; - width: 264px; - height: 35px; + width: 225px; } /* ALPHA BROWSE------> */ -ul#alpha-browse-childClass{ +ul#alpha-browse-individuals { float: left; width: 620px; padding-left: 10px; + list-style: none; } -ul#alpha-browse-childClass li{ +ul#alpha-browse-individuals li { float: left; margin-right: 4px; padding-top: 8px; } -ul#alpha-browse-childClass li:last-child{ +ul#alpha-browse-individuals li:last-child { border-bottom: 0; } -ul#alpha-browse-childClass a{ +ul#alpha-browse-individuals a { display: block; height: 35px; margin-left: 0; @@ -260,55 +212,87 @@ ul#alpha-browse-childClass a{ width: 10px; } /* BROWSE INDIVIDUALS------> */ -#individuals-in-childClass{ +#individuals-in-class { float: right; - width: 45%; + width: 68%; padding-bottom: 30px; margin-bottom: 30px; margin-right: 17px; + min-height: 170px; } -#individuals-in-childClass h3{ - padding: 10px 0 10px 30px; +h3.selected-class { + margin: 0 0 0 1em; + padding: .8em 0 0 0; } -#individuals-in-childClass ul{ +#individuals-in-class ul { list-style: none; } -#individuals-in-childClass li.individual-foaf-person{ - width: 39%; - padding-bottom: 30px; - padding-top: 20px; +li.individual { + width: 90%; + padding: 20px 0; margin-left: 30px; margin-right: 30px; - clear: left; - min-height: 100px; + overflow: hidden; } -#individuals-in-childClass li.individual-foaf-person img{ +li.individual img { float: left; + margin-right: 20px; } -#individuals-in-childClass li.individual-foaf-person h1{ +li.individual h1 { + padding: 0; + line-height: 1.2em; font-weight: bold; - padding: 30px 0 10px 110px; - line-height: 1.2em; } -#individuals-in-childClass p{ - padding-left: 110px; - line-height: 1.2em; +li.individual h1.thumb { + padding-top: 30px; } -#individuals-in-childClass span.org{ +#individuals-in-class span.title { + display: block; + margin: .8em 0 0 0; + font-size: .8em; + line-height: 1; +} +#individuals-in-class span.org { display: block; } -#individuals-in-childClass li.individual{ - width: 440px; - margin-left: 30px; - margin-right: 30px; +p.no-individuals { + margin: 1em 2em; } -#individuals-in-childClass li.individual h1{ - margin: 0; +.pagination { + margin: .3em 0 0 1.4em; +} +.pagination h3 { + display: inline; + margin: 0 .3em 0 0; padding: 0; - color: #5e6363; - line-height: 1.2em; - padding-bottom: 20px; - padding-top: 20px; - font-size: 1em; - font-weight: normal; + font-size: 1.1em; + color: #666; +} +.pagination ul { + display: inline; +} +.pagination li { + display: inline-block; + margin: 0; + border: none; +} +.pagination li.selected { + padding: 0 0.4em; + line-height: 1.5; + color: #333; + background: #ddd; +} +.pagination li a { + padding: 0 0.4em; + border: none; +} +.pagination li a:hover { + color: #fff; + background: #333; + border: none; +} +.pagination .round { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } \ No newline at end of file diff --git a/webapp/web/css/revision.css b/webapp/web/css/revision.css index 4234fce41..e7a863efa 100644 --- a/webapp/web/css/revision.css +++ b/webapp/web/css/revision.css @@ -2,31 +2,25 @@ /* Styles for Freemarker template revisionInfo */ -#revision-build-date{ - width:475px; - float:right; - border-left:1px solid #DFE6E6; - padding-left:35px; - height:200px; +#revision-build-date { + width: 475px; + float: right; + padding-left: 35px; + height: 200px; } -#revision-levels{ - width:375px; - float:left; +#revision-levels { + width: 375px; + float: left; } -#revision-levels caption{ +#revision-levels caption { padding: 10px 0 12px 0; - margin:0; - font-size: 18px; - color: #2485ae; + margin: 0; text-align: left; } -#revision-levels th{ - font-weight:bold; - padding:15px 20px 15px 20px; - border:1px solid #DFE6E6; +#revision-levels th { + padding: 15px 20px 15px 20px; } -#revision-levels td{ - padding:8px 20px 8px 20px; - border:1px solid #DFE6E6; - text-align:center; +#revision-levels td { + padding: 8px 20px 8px 20px; + text-align: center; } diff --git a/webapp/web/css/search.css b/webapp/web/css/search.css new file mode 100644 index 000000000..a501b8dcd --- /dev/null +++ b/webapp/web/css/search.css @@ -0,0 +1,52 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +/* Search form styles */ + +/* Search form */ +.advancedSearchForm .form-button { + margin-top: 1em +} +/* Class and subclass refinement links */ +.searchTOC { + margin-bottom: 1.5em; +} +/* Search results */ +.searchhits li { + margin-top: 1em; +} +span.SearchTerm, +h1 span.SearchTerm, +a:link span.SearchTerm, +a:visited span.SearchTerm { + font-weight: bold; + color: #7D7D7D; +} +/* bPaging links */ +.searchpages { + margin-top: 2em; +} +.searchpages a, +.searchpages span { + margin-left: .5em; + margin-right: .5em; +} +.searchpages a:link, +.searchpages a:visited { + text-decoration: none; +} +.searchpages a:hover, +.searchpages a:active { + text-decoration: underline; +} +.searchpages a.prev { + margin-right: 1em; + text-decoration: underline; +} +.searchpages a.next { + margin-left: 1em; + text-decoration: underline; +} +/* Search tips */ +div.searchTips li { + line-height: 2em; +} \ No newline at end of file diff --git a/webapp/web/css/uploadImages.css b/webapp/web/css/uploadImages.css index 54188aa8a..ec27b2273 100644 --- a/webapp/web/css/uploadImages.css +++ b/webapp/web/css/uploadImages.css @@ -1,55 +1,55 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ /* <------ UPLOAD PICTURE*/ -#photoUpload{ - margin-left: 0px; +#photoUpload { + margin-left: 0; height: 280px; background: #fff; padding: 15px; } -#photoUploadDefaultImage{ - width: 120px; +#photoUploadDefaultImage { + width: 130px; float: left; } -#photoUploadDefaultImage img{ +#photoUploadDefaultImage img { margin-bottom: 10px; } -#photoUploadForm{ +#photoUploadForm { width: 280px; float: left; - padding-left: 15px; + padding-left: 25px; margin-left: 1.2em; margin-top: 30px; padding-top: 15px; padding-bottom: 25px; } -#photoUploadForm label{ +#photoUploadForm label { display: block; padding-bottom: 10px; } -#photoUploadForm label span{ - font-size: 0.7em; +#photoUploadForm label span { + font-size: .7em; } -#photoUploadForm input{ +#photoUploadForm input { margin-bottom: 10px; } /* <------ CROP PICTURE*/ -#photoCropping{ - margin-left: 0px; +#photoCropping { + margin-left: 0; height: 450px; background: #fff; padding: 15px 0 15px 15px; margin-right: 0; } -#photoCroppingPreview{ +#photoCroppingPreview { width: 180px; float: left; } -.photoCroppingNote{ +.photoCroppingNote { margin-top: 15px; - font-size: 0.8em; + font-size: .8em; } -#photoCropping{ +#photoCropping { width: 400px; float: left; padding-top: 30px; @@ -57,38 +57,37 @@ margin-left: 0; margin-right: 0; } -.photoCroppedPreview{ +.photoCroppedPreview { width: 115px; height: 115px; overflow: hidden; } /* <------ DELETE PICTURE*/ -#photoDeletingContainer{ - margin-left: 0px; +#photoDeletingContainer { + margin-left: 0; width: 720px; height: 330px; background: #fff; padding: 15px; } /* <------ ERROR ALERTS*/ -#error-alert{ +#error-alert { color: #900; - padding: 0px; + padding: 0; margin-bottom: 5px; height: 30px; } -#error-alert img{ +#error-alert img { float: left; margin: 0; padding: 0; vertical-align: middle; } -#error-alert p{ +#error-alert p { padding-left: 35px; - font-size: 0.9em; + font-size: .9em; line-height: 30px; } -.or{ +.or { display: inline; - vertical-align: middle; } \ No newline at end of file diff --git a/webapp/web/css/vitro.css b/webapp/web/css/vitro.css index 22d0d0232..3ef2204f6 100644 --- a/webapp/web/css/vitro.css +++ b/webapp/web/css/vitro.css @@ -13,22 +13,15 @@ 2011-01-13 *****************************************/ -/************************ -Miscellaneous -************************/ - +/* <------ MISCELLANEOUS*/ .clear { clear: both; } - .hidden { display: none !important; } - -/************************ -User feedback -************************/ -#error-alert{ +/* <------ USER FEEDBACK*/ +#error-alert { color: #900; padding: 10px; margin-bottom: 5px; @@ -42,12 +35,15 @@ User feedback } #error-alert p { padding-left: 30px; - font-size: 0.9em; + font-size: .9em; line-height: 30px; } +#error-alert p.login-alert { + padding-top: 0; +} #confirmation-alert { color: #169f43; - padding: 0px; + padding: 0; margin-bottom: 5px; height: 30px; } @@ -59,11 +55,15 @@ User feedback } #confirmation-alert p { padding-left: 30px; - font-size: 0.9em; + font-size: .9em; line-height: 30px; } #flash-message{ background-color: #7285a0; - padding: 0.5em; + padding: .5em; margin-bottom: 10px; +} +/* <------ INDEX PAGE*/ +.siteMap h2 { + padding-bottom: 0; } \ No newline at end of file diff --git a/webapp/web/edit/forms/dateTimeIntervalForm.jsp b/webapp/web/edit/forms/dateTimeIntervalForm.jsp index 3ca6cd0d6..d3a8b4642 100644 --- a/webapp/web/edit/forms/dateTimeIntervalForm.jsp +++ b/webapp/web/edit/forms/dateTimeIntervalForm.jsp @@ -19,6 +19,7 @@ <%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Css" %> <%@ page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%> <%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.DateTimeIntervalValidation"%> <%@ page import="org.apache.commons.logging.Log" %> <%@ page import="org.apache.commons.logging.LogFactory" %> @@ -27,7 +28,7 @@ <%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %> <%! - public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.forms.dateTimeIntervalForm.jsp"); + public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.forms.dateTimeIntervalForm"); %> <% VitroRequest vreq = new VitroRequest(request); @@ -35,8 +36,7 @@ vreq.setAttribute("defaultNamespace", ""); //empty string triggers default new URI behavior %> - -<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.DateTimeIntervalValidation"%> + @@ -138,14 +138,14 @@ %> - + <% } else { // adding new entry %> - + <% } %> @@ -223,9 +223,9 @@ //setup date time edit elements Field startField = editConfig.getField("startField"); // arguments for DateTimeWithPrecision are (fieldName, minimumPrecision, [requiredLevel]) - startField.setEditElement(new DateTimeWithPrecision(startField, VitroVocabulary.Precision.YEAR.uri(), VitroVocabulary.Precision.SECOND.uri())); + startField.setEditElement(new DateTimeWithPrecision(startField, VitroVocabulary.Precision.SECOND.uri(), VitroVocabulary.Precision.NONE.uri())); Field endField = editConfig.getField("endField"); - endField.setEditElement(new DateTimeWithPrecision(endField, VitroVocabulary.Precision.YEAR.uri(), VitroVocabulary.Precision.SECOND.uri())); + endField.setEditElement(new DateTimeWithPrecision(endField, VitroVocabulary.Precision.SECOND.uri(), VitroVocabulary.Precision.NONE.uri())); } editConfig.addValidator(new DateTimeIntervalValidation("startField","endField") ); @@ -236,7 +236,17 @@ editConfig.prepareForObjPropUpdate(model); } else { // adding new editConfig.prepareForNonUpdate(model); - } + } + + List customJs = new ArrayList(Arrays.asList(JavaScript.JQUERY_UI.path(), + JavaScript.CUSTOM_FORM_UTILS.path() + )); + request.setAttribute("customJs", customJs); + + List customCss = new ArrayList(Arrays.asList(Css.JQUERY_UI.path(), + Css.CUSTOM_FORM.path() + )); + request.setAttribute("customCss", customCss); String subjectName = ((Individual) request.getAttribute("subject")).getName(); %> diff --git a/webapp/web/edit/forms/dateTimeValueForm.jsp b/webapp/web/edit/forms/dateTimeValueForm.jsp new file mode 100644 index 000000000..68bf72232 --- /dev/null +++ b/webapp/web/edit/forms/dateTimeValueForm.jsp @@ -0,0 +1,191 @@ +<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%> + +<%@ page import="java.util.List" %> +<%@ page import="java.util.ArrayList" %> +<%@ page import="java.util.Arrays" %> + +<%@ page import="com.hp.hpl.jena.rdf.model.Literal"%> +<%@ page import="com.hp.hpl.jena.rdf.model.Model"%> +<%@ page import="com.hp.hpl.jena.vocabulary.XSD" %> + +<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Individual"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.EditConfiguration"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.web.MiscWebUtils"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.StartYearBeforeEndYear"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.JavaScript" %> +<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Css" %> +<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%> + +<%@ page import="org.apache.commons.logging.Log" %> +<%@ page import="org.apache.commons.logging.LogFactory" %> +<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.DateTimeIntervalValidation"%> + +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> +<%@ taglib prefix="v" uri="http://vitro.mannlib.cornell.edu/vitro/tags" %> + +<%! + public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.edit.forms.dateTimeValueForm"); +%> +<% + VitroRequest vreq = new VitroRequest(request); + WebappDaoFactory wdf = vreq.getWebappDaoFactory(); + vreq.setAttribute("defaultNamespace", ""); //empty string triggers default new URI behavior +%> + + + + + + + + + + + + +<%-- Assertions for adding a new date time value --%> + + ?subject <${toDateTimeValue}> ?valueNode . + ?valueNode <${type}> <${valueType}> . + ?valueNode <${dateTimeValue}> ?dateTimeField.value . + ?valueNode <${dateTimePrecision}> ?dateTimeField.precision . + + +<%-- Queries for editing an existing role --%> + + SELECT ?existingNode WHERE { + ?subject <${toDateTimeValue}> ?existingNode . + ?existingNode <${type}> <${valueType}> . } + + + + SELECT ?existingDateTimeValue WHERE { + ?subject <${toDateTimeValue}> ?existingValueNode . + ?existingValueNode <${type}> <${valueType}> . + ?existingValueNode <${dateTimeValue}> ?existingDateTimeValue . } + + + + SELECT ?existingPrecision WHERE { + ?subject <${toDateTimeValue}> ?existingValueNode . + ?existingValueNode <${type}> <${valueType}> . + ?existingValueNode <${dateTimePrecision}> ?existingPrecision . } + + + +<%-- Configure add vs. edit --%> +<% + + String objectUri = (String) request.getAttribute("objectUri"); + if (objectUri != null) { // editing existing entry +%> + + + + +<% + } else { // adding new entry +%> + + + + +<% } %> + + + { + "formUrl" : "${formUrl}", + "editKey" : "${editKey}", + "urlPatternToReturnTo" : "/individual", + + "subject" : ["subject", "${subjectUriJson}" ], + "predicate" : ["toDateTimeValue", "${predicateUriJson}" ], + "object" : ["valueNode", "${objectUriJson}", "URI" ], + + "n3required" : [ ], + + "n3optional" : [ "${n3ForValue}" ], + + "newResources" : { "valueNode" : "${defaultNamespace}" }, + + "urisInScope" : { }, + "literalsInScope": { }, + "urisOnForm" : [ ], + "literalsOnForm" : [ ], + "filesOnForm" : [ ], + "sparqlForLiterals" : { }, + "sparqlForUris" : { }, + "sparqlForExistingLiterals" : { + "dateTimeField.value" : "${existingDateTimeValueQuery}", + }, + "sparqlForExistingUris" : { + "valueNode" : "${existingNodeQuery}", + "dateTimeField.precision": "${existingPrecisionQuery}" + }, + "fields" : { + "dateTimeField" : { + "newResource" : "false", + "validators" : [ ], + "optionsType" : "UNDEFINED", + "literalOptions" : [ ], + "predicateUri" : "", + "objectClassUri" : "", + "rangeDatatypeUri" : "", + "rangeLang" : "", + "assertions" : ["${n3ForValue}"] + } + } +} + + +<% + log.debug(request.getAttribute("editjson")); + + EditConfiguration editConfig = EditConfiguration.getConfigFromSession(session,request); + if (editConfig == null) { + editConfig = new EditConfiguration((String) request.getAttribute("editjson")); + EditConfiguration.putConfigInSession(editConfig,session); + + //setup date time edit elements + Field dateTimeField = editConfig.getField("dateTimeField"); + // arguments for DateTimeWithPrecision are (fieldName, minimumPrecision, [requiredLevel]) + dateTimeField.setEditElement(new DateTimeWithPrecision(dateTimeField, VitroVocabulary.Precision.SECOND.uri(), VitroVocabulary.Precision.NONE.uri())); + } + + Model model = (Model) application.getAttribute("jenaOntModel"); + + if (objectUri != null) { // editing existing + editConfig.prepareForObjPropUpdate(model); + } else { // adding new + editConfig.prepareForNonUpdate(model); + } + + List customJs = new ArrayList(Arrays.asList(JavaScript.JQUERY_UI.path(), + JavaScript.CUSTOM_FORM_UTILS.path() + )); + request.setAttribute("customJs", customJs); + + List customCss = new ArrayList(Arrays.asList(Css.JQUERY_UI.path(), + Css.CUSTOM_FORM.path() + )); + request.setAttribute("customCss", customCss); + + String subjectName = ((Individual) request.getAttribute("subject")).getName(); +%> + + + +

${titleVerb} date time value for <%= subjectName %>

+ +
" > + + + +

+ + + \ No newline at end of file diff --git a/webapp/web/edit/forms/defaultObjPropForm.jsp b/webapp/web/edit/forms/defaultObjPropForm.jsp index 51f7e2fe3..f04c35f26 100644 --- a/webapp/web/edit/forms/defaultObjPropForm.jsp +++ b/webapp/web/edit/forms/defaultObjPropForm.jsp @@ -27,7 +27,9 @@ <%@page import="java.util.Map"%> <%@page import="com.hp.hpl.jena.ontology.OntModel"%> <%@page import="edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch"%> -<%@page import="edu.cornell.mannlib.vitro.webapp.web.DisplayVocabulary"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary"%> + + PREFIX owl: SELECT ?inverse_property WHERE { diff --git a/webapp/web/edit/forms/propDelete.jsp b/webapp/web/edit/forms/propDelete.jsp index 65386d323..e2bf17fe5 100644 --- a/webapp/web/edit/forms/propDelete.jsp +++ b/webapp/web/edit/forms/propDelete.jsp @@ -21,8 +21,15 @@ <%@ page import="edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils" %> <%@ page import="com.hp.hpl.jena.rdf.model.Model" %> <%@page import="edu.cornell.mannlib.vitro.webapp.web.MiscWebUtils"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerConfigurationLoader"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.TemplateProcessingHelper"%> + +<%@page import="freemarker.template.Configuration"%> <%@ page import="java.util.List" %> +<%@ page import="java.util.Map" %> +<%@ page import="java.util.HashMap" %> <%@ page import="org.apache.commons.logging.Log" %> <%@ page import="org.apache.commons.logging.LogFactory" %> @@ -90,58 +97,44 @@ public WebappDaoFactory getUnfilteredDaoFactory() { Individual subject = wdf.getIndividualDao().getIndividualByURI(subjectUri); if( subject == null ) throw new Error("could not find subject " + subjectUri); request.setAttribute("subjectName",subject.getName()); - - boolean foundClass = false; - String customShortView = null; - String shortViewPrefix = "/templates/entity/"; - Individual object = getUnfilteredDaoFactory().getIndividualDao().getIndividualByURI(objectUri); - if( object == null ) { - //log.warn("Could not find object individual "+objectUri+" via wdf.getIndividualDao().getIndividualByURI(objectUri)"); - request.setAttribute("objectName","(name unspecified)"); - } else if (FrontEndEditingUtils.isVitroNsObjProp(predicateUri)) { - Model model = (Model)application.getAttribute("jenaOntModel"); - request.setAttribute("individual", object); - request.setAttribute("objectName", FrontEndEditingUtils.getVitroNsObjDisplayName(predicateUri, object, model)); - log.debug("setting object name " + (String)request.getAttribute("objectName") + " for vitro namespace object property " + predicateUri); - } else { - customShortView = MiscWebUtils.getCustomShortView(object, request); - if (customShortView != null) { - foundClass = true; - log.debug("setting object name from VClass custom short view"); - request.setAttribute("customShortView",shortViewPrefix + customShortView.trim()); - request.setAttribute("individual",object); + // Get the statement data to display + // rjy7 Alternative implementation: have the template put the markup into a url or form param + // which can then just be spit out here. + String templateName = request.getParameter("templateName"); + Map params = request.getParameterMap(); + Map statement = new HashMap(); + for (Object key : params.keySet()) { + String keyString = (String) key; //key.toString() + if (keyString.startsWith("statement_")) { + keyString = keyString.replaceFirst("statement_", ""); + String value = ( (String[]) params.get(key))[0]; + statement.put(keyString, value); } - if (!foundClass) { - VClass clas = prop.getRangeVClass(); - if (clas != null) { - customShortView = clas.getCustomShortView(); - if (customShortView != null && customShortView.trim().length()>0) { - log.warn("setting object name from VClass custom short view \""+customShortView.trim()+"\""); - request.setAttribute("customShortView",shortViewPrefix + customShortView.trim()); - request.setAttribute("individual",object); - } else { - log.error("No custom short view jsp set for VClass "+clas.getName()+" so cannot render link name correctly"); - request.setAttribute("objectName",object.getName()); - } - } - } - }%> + } + + // Process the statement data through the template to create the display string + String statementDisplay = null; + if (! statement.isEmpty()) { + Map map = new HashMap(); + map.put("statement", statement); + map.putAll(FreemarkerHttpServlet.getDirectives()); + map.putAll(FreemarkerHttpServlet.getMethods()); + ServletContext context = getServletContext(); + FreemarkerConfigurationLoader loader = + FreemarkerConfigurationLoader.getFreemarkerConfigurationLoader(context); + Configuration fmConfig = loader.getConfig(vreq); + TemplateProcessingHelper helper = new TemplateProcessingHelper(fmConfig, vreq, context); + statementDisplay = helper.processTemplateToString(templateName, map); + } + request.setAttribute("statementDisplay", statementDisplay); +%>
-
- - - - - - - ${objectName} - -
+
${statementDisplay}
diff --git a/webapp/web/fileupload/datastreamModification.jsp b/webapp/web/fileupload/datastreamModification.jsp index b68c8f6e0..15ab6c109 100644 --- a/webapp/web/fileupload/datastreamModification.jsp +++ b/webapp/web/fileupload/datastreamModification.jsp @@ -20,5 +20,5 @@ - +
diff --git a/webapp/web/images/iconInfo.png b/webapp/web/images/iconInfo.png new file mode 100644 index 000000000..d3959d8e6 Binary files /dev/null and b/webapp/web/images/iconInfo.png differ diff --git a/webapp/web/images/individual/Bacall.jpg b/webapp/web/images/individual/Bacall.jpg deleted file mode 100644 index 1a1b4c272..000000000 Binary files a/webapp/web/images/individual/Bacall.jpg and /dev/null differ diff --git a/webapp/web/images/individual/Bogart.jpg b/webapp/web/images/individual/Bogart.jpg deleted file mode 100644 index 35c6d20e5..000000000 Binary files a/webapp/web/images/individual/Bogart.jpg and /dev/null differ diff --git a/webapp/web/images/individual/Gable.jpg b/webapp/web/images/individual/Gable.jpg deleted file mode 100644 index e3cf7b61f..000000000 Binary files a/webapp/web/images/individual/Gable.jpg and /dev/null differ diff --git a/webapp/web/images/individual/Grant.jpg b/webapp/web/images/individual/Grant.jpg deleted file mode 100644 index f04c2189d..000000000 Binary files a/webapp/web/images/individual/Grant.jpg and /dev/null differ diff --git a/webapp/web/images/individual/Leigh.jpg b/webapp/web/images/individual/Leigh.jpg deleted file mode 100644 index 1418aa348..000000000 Binary files a/webapp/web/images/individual/Leigh.jpg and /dev/null differ diff --git a/webapp/web/images/individual/Welles.jpg b/webapp/web/images/individual/Welles.jpg deleted file mode 100644 index 30de9b4a0..000000000 Binary files a/webapp/web/images/individual/Welles.jpg and /dev/null differ diff --git a/webapp/web/images/individual/scroll-up.gif b/webapp/web/images/individual/scroll-up.gif new file mode 100644 index 000000000..a8e9aa035 Binary files /dev/null and b/webapp/web/images/individual/scroll-up.gif differ diff --git a/webapp/web/images/individual/uriIcon.gif b/webapp/web/images/individual/uriIcon.gif new file mode 100644 index 000000000..f8f22c335 Binary files /dev/null and b/webapp/web/images/individual/uriIcon.gif differ diff --git a/webapp/web/images/menupage/arrow-carousel-people.jpg b/webapp/web/images/menupage/arrow-carousel-people.jpg deleted file mode 100644 index 88d09a876..000000000 Binary files a/webapp/web/images/menupage/arrow-carousel-people.jpg and /dev/null differ diff --git a/webapp/web/images/menupage/arrow-green.gif b/webapp/web/images/menupage/arrow-green.gif deleted file mode 100644 index b3a75c25d..000000000 Binary files a/webapp/web/images/menupage/arrow-green.gif and /dev/null differ diff --git a/webapp/web/images/menupage/arrow.gif b/webapp/web/images/menupage/arrow.gif deleted file mode 100644 index 8d9199e7a..000000000 Binary files a/webapp/web/images/menupage/arrow.gif and /dev/null differ diff --git a/webapp/web/images/menupage/visual-graph-generic-class.jpg b/webapp/web/images/menupage/visual-graph-generic-class.jpg deleted file mode 100644 index 8749a5a75..000000000 Binary files a/webapp/web/images/menupage/visual-graph-generic-class.jpg and /dev/null differ diff --git a/webapp/web/images/menupage/visual-graph.jpg b/webapp/web/images/menupage/visual-graph.jpg deleted file mode 100644 index 2b9634b20..000000000 Binary files a/webapp/web/images/menupage/visual-graph.jpg and /dev/null differ diff --git a/webapp/web/images/placeholders/non.person.thumbnail.jpg b/webapp/web/images/placeholders/non.person.thumbnail.jpg new file mode 100644 index 000000000..168ce4a41 Binary files /dev/null and b/webapp/web/images/placeholders/non.person.thumbnail.jpg differ diff --git a/webapp/web/images/userIcon.gif b/webapp/web/images/userIcon.gif deleted file mode 100644 index c45780711..000000000 Binary files a/webapp/web/images/userIcon.gif and /dev/null differ diff --git a/webapp/web/jenaIngest/connectDB.jsp b/webapp/web/jenaIngest/connectDB.jsp index b00237703..75477049a 100644 --- a/webapp/web/jenaIngest/connectDB.jsp +++ b/webapp/web/jenaIngest/connectDB.jsp @@ -7,35 +7,34 @@
- - -

JDBC URL

+ + + -

username

- - -

password

- - - - - - - + + + + + + + + + + + + -

database type

- + diff --git a/webapp/web/jenaIngest/createModel.jsp b/webapp/web/jenaIngest/createModel.jsp index 31a36ca51..a873f7662 100644 --- a/webapp/web/jenaIngest/createModel.jsp +++ b/webapp/web/jenaIngest/createModel.jsp @@ -5,6 +5,6 @@ Model name: - +
diff --git a/webapp/web/jenaIngest/csv2rdf.jsp b/webapp/web/jenaIngest/csv2rdf.jsp index 46ed2caae..ad68d3903 100644 --- a/webapp/web/jenaIngest/csv2rdf.jsp +++ b/webapp/web/jenaIngest/csv2rdf.jsp @@ -65,4 +65,4 @@

Destination Model for TBox

- + diff --git a/webapp/web/jenaIngest/csv2rdfSelectUri.jsp b/webapp/web/jenaIngest/csv2rdfSelectUri.jsp index e184d973f..a5be03dd6 100644 --- a/webapp/web/jenaIngest/csv2rdfSelectUri.jsp +++ b/webapp/web/jenaIngest/csv2rdfSelectUri.jsp @@ -77,7 +77,7 @@ function disableProperties(){ - + diff --git a/webapp/web/jenaIngest/executeWorkflow.jsp b/webapp/web/jenaIngest/executeWorkflow.jsp index 751cff0be..a6bf6b518 100644 --- a/webapp/web/jenaIngest/executeWorkflow.jsp +++ b/webapp/web/jenaIngest/executeWorkflow.jsp @@ -42,4 +42,4 @@ %> - + diff --git a/webapp/web/jenaIngest/exportSelection.jsp b/webapp/web/jenaIngest/exportSelection.jsp index 27eb39a2c..7df0d84e4 100644 --- a/webapp/web/jenaIngest/exportSelection.jsp +++ b/webapp/web/jenaIngest/exportSelection.jsp @@ -44,7 +44,7 @@ - + diff --git a/webapp/web/jenaIngest/generateTBox.jsp b/webapp/web/jenaIngest/generateTBox.jsp index f9813d81e..9cbeb1816 100644 --- a/webapp/web/jenaIngest/generateTBox.jsp +++ b/webapp/web/jenaIngest/generateTBox.jsp @@ -51,4 +51,4 @@ %> - + diff --git a/webapp/web/jenaIngest/loadRDFData.jsp b/webapp/web/jenaIngest/loadRDFData.jsp index 67b918886..a8e325f57 100644 --- a/webapp/web/jenaIngest/loadRDFData.jsp +++ b/webapp/web/jenaIngest/loadRDFData.jsp @@ -18,5 +18,5 @@



-

+

\ No newline at end of file diff --git a/webapp/web/jenaIngest/mergeIndividuals.jsp b/webapp/web/jenaIngest/mergeIndividuals.jsp index 5a2a296e0..c2d44f662 100644 --- a/webapp/web/jenaIngest/mergeIndividuals.jsp +++ b/webapp/web/jenaIngest/mergeIndividuals.jsp @@ -37,6 +37,6 @@ Duplicate individual URI -

+

diff --git a/webapp/web/jenaIngest/merge_result.jsp b/webapp/web/jenaIngest/merge_result.jsp index f09ec326b..306b77769 100644 --- a/webapp/web/jenaIngest/merge_result.jsp +++ b/webapp/web/jenaIngest/merge_result.jsp @@ -18,7 +18,7 @@ if(!result.equals("No statements merged") && !result.endsWith("statements.")){%>

Download non-mergeable statements.

-

+


<%}} %> diff --git a/webapp/web/jenaIngest/permanentURI.jsp b/webapp/web/jenaIngest/permanentURI.jsp index 969085611..5b09a324f 100644 --- a/webapp/web/jenaIngest/permanentURI.jsp +++ b/webapp/web/jenaIngest/permanentURI.jsp @@ -56,5 +56,5 @@ Or <%String defaultNamespace = (String)request.getAttribute("defaultNamespace");

Use default namespace <%=defaultNamespace%>

-

+

\ No newline at end of file diff --git a/webapp/web/jenaIngest/processStrings.jsp b/webapp/web/jenaIngest/processStrings.jsp index b13816676..cef9f632d 100644 --- a/webapp/web/jenaIngest/processStrings.jsp +++ b/webapp/web/jenaIngest/processStrings.jsp @@ -69,4 +69,4 @@

model in which to save retracted statements

- + diff --git a/webapp/web/jenaIngest/renameBNodes.jsp b/webapp/web/jenaIngest/renameBNodes.jsp index af534773a..02f170e70 100644 --- a/webapp/web/jenaIngest/renameBNodes.jsp +++ b/webapp/web/jenaIngest/renameBNodes.jsp @@ -35,5 +35,5 @@ %> - + diff --git a/webapp/web/jenaIngest/renameBNodesURISelect.jsp b/webapp/web/jenaIngest/renameBNodesURISelect.jsp index 791ff943f..4f4ed79e7 100644 --- a/webapp/web/jenaIngest/renameBNodesURISelect.jsp +++ b/webapp/web/jenaIngest/renameBNodesURISelect.jsp @@ -88,7 +88,7 @@ function disableProperties(){ %> - + diff --git a/webapp/web/js/browseClassGroups.js b/webapp/web/js/browseClassGroups.js new file mode 100644 index 000000000..4fc2922b9 --- /dev/null +++ b/webapp/web/js/browseClassGroups.js @@ -0,0 +1,197 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +var browseClassGroups = { + // Initial page setup + onLoad: function() { + this.mergeFromTemplate(); + this.initObjects(); + this.bindEventListeners(); + }, + + // Add variables from browse template + mergeFromTemplate: function() { + $.extend(this, browseData); + }, + + // Create references to frequently used elements for convenience + initObjects: function() { + this.vClassesInClassGroup = $('ul#classes-in-classgroup'); + this.browseClassGroupLinks = $('#browse-classgroups li a'); + this.browseClasses = $('#browse-classes'); + }, + + // Event listeners. Called on page load + bindEventListeners: function() { + // Listener for classGroup switching + this.browseClassGroupLinks.click(function() { + uri = $(this).attr("data-uri"); + individualCount = $(this).attr("data-count"); + browseClassGroups.getVClasses(uri, individualCount); + return false; + }); + + // Call the bar chart highlighter listener + this.chartHighlighterListener(); + }, + + // Listener for bar chart highlighting -- separate from the rest because it needs to be callable + chartHighlighterListener: function() { + // This essentially replicates the native Raphael hover behavior (see chart.hover below) + // but allows us to trigger it via jQuery from the list of classes adjacent to the chart + $('ul#classes-in-classgroup li a').hover(function() { + var classIndex = $('ul#classes-in-classgroup li a').index(this); + $('#visual-graph svg path').eq(classIndex).attr('fill', '#ccc'); + return false; + }, function() { + var classIndex = $('ul#classes-in-classgroup li a').index(this); + $('#visual-graph svg path').eq(classIndex).attr('fill', '#999'); + }) + }, + + // Load classes and chart for default class group as defined by template + defaultClassGroup: function() { + if ( this.defaultBrowseClassGroupURI != "false" ) { + this.getVClasses(this.defaultBrowseClassGroupUri, this.defaultBrowseClassGroupCount); + } + }, + + // Where all the magic happens -- gonna fetch me some classes + getVClasses: function(classgroupUri, classGroupIndivCount) { + url = this.dataServiceUrl + encodeURIComponent(classgroupUri); + + // First wipe currently displayed classes, browse all link, and bar chart + this.vClassesInClassGroup.empty(); + $('a.browse-superclass').remove(); + $('#visual-graph').empty(); + + var values = [], + labels = [], + uris = [], + classList = [], + populatedClasses = 0; + potentialSuperClasses = []; + + $.getJSON(url, function(results) { + + $.each(results.classes, function(i, item) { + name = results.classes[i].name; + uri = results.classes[i].URI; + indivCount = results.classes[i].entityCount; + indexUrl = browseClassGroups.baseUrl +'/individuallist?vclassId='+ encodeURIComponent(uri); + // Only add to the arrays and render classes when they aren't empty + if ( indivCount > 0 ) { + // if the class individual count is equal to the class group individual count, this could be a super class + if ( indivCount == classGroupIndivCount ) { + potentialSuperClasses.push(populatedClasses); + } + + values.push(parseInt(indivCount, 10)); + labels.push(name); + uris.push(uri); + + // Build the content of each list item, piecing together each component + listItem = '
  • '; + listItem += ''+ name +''; + listItem += '
  • '; + + // Add the list item to the array of classes + classList.push(listItem); + + populatedClasses++; + } + }) + + // Test for number of potential super classes. If only 1, then remove it from all arrays + // But only do so if there are at least 2 classes in the list to begin with + if ( classList.length > 1 && potentialSuperClasses.length == 1 ){ + // Grab the URI of the super class before splicing + superClassUri = uris[potentialSuperClasses]; + + values.splice(potentialSuperClasses, 1); + labels.splice(potentialSuperClasses, 1); + uris.splice(potentialSuperClasses, 1); + classList.splice(potentialSuperClasses, 1); + + browseAllUrl = browseClassGroups.baseUrl +'/individuallist?vclassId='+ encodeURIComponent(superClassUri); + browseAllLink = 'Browse all »'; + browseClassGroups.browseClasses.prepend(browseAllLink); + } + + // Add the classes to the DOM + $.each(classList, function(i, listItem) { + browseClassGroups.vClassesInClassGroup.append(listItem); + }) + + // Set selected class group + browseClassGroups.selectedClassGroup(results.classGroupUri); + + // Update the graph + graphClassGroups.barchart(values, labels, uris); + + // Call the bar highlighter listener + browseClassGroups.chartHighlighterListener(); + }); + }, + + // Toggle the active class group so it's clear which is selected + selectedClassGroup: function(classGroupUri) { + // Remove active class on all vClasses + $('#browse-classgroups li a.selected').removeClass('selected'); + + // Add active class for requested vClass + $('#browse-classgroups li a[data-uri="'+ classGroupUri +'"]').addClass('selected'); + } +}; + +var graphClassGroups = { + // Build the bar chart using gRaphael + barchart: function(values, labels, uris) { + var height = values.length * 37; + + // Create the canvas + var r = Raphael("visual-graph", 300, height + 10); + + var chart = r.g.hbarchart(0, 16, 300, height, [values], {type:"soft", singleColor:"#999"}); + + // Was unable to append within -- was always hidden and couldn't get it to display + // so using jQuery click to add links + $('rect').click(function() { + var index = $('rect').index(this); + var uri = uris[index]; + var link = browseClassGroups.baseUrl + '/individuallist?vclassId=' + encodeURIComponent(uri); + window.location = link; + }); + + // Add title attributes to each in the bar chart + $('rect').each(function() { + var index = $('rect').index(this); + var label = labels[index]; + var title = 'Browse all '+ label +' content'; + + // Add a title attribute + $(this).attr('title', title); + }); + + // On hover + // 1. Change bar color + // 2. Highlight class name in main list + chart.hover(function() { + this.bar.attr({fill: "#ccc"}); + $('rect').hover(function() { + var index = $('rect').index(this); + $('#classes-in-classgroup li a').eq(index).addClass('selected'); + }) + }, function() { + this.bar.attr({fill: "#999"}); + $('rect').hover(function() { + var index = $('rect').index(this); + $('#classes-in-classgroup li a').eq(index).removeClass('selected'); + }) + }); + } +}; + +$(document).ready(function() { + browseClassGroups.onLoad(); + browseClassGroups.defaultClassGroup(); +}); \ No newline at end of file diff --git a/webapp/web/js/edit/entityRetry.js b/webapp/web/js/edit/entityRetry.js index d895a901a..f105d8a2f 100644 --- a/webapp/web/js/edit/entityRetry.js +++ b/webapp/web/js/edit/entityRetry.js @@ -4,7 +4,7 @@ @@ -331,4 +331,27 @@ function fillList(id, data, selectedtext) { return [curleft,curtop]; } --> - + + // ------------------------------------------------------------------------------- + // Using jQuery to step in for DWR and provide original moniker selection behavior + // ------------------------------------------------------------------------------- + var monikerSelection = { + // onChange event listener for moniker select list + monikerListener: function() { + $('#Moniker').change(function() { + // alert('The moniker has changed'); + // if "[new moniker]" is selected, then enable the alt field + if ( $('#Moniker option:selected').text() == "[new moniker]" ) { + $('#MonikerSelectAlt').removeAttr('disabled'); + } else { + $('#MonikerSelectAlt').val(''); + $('#MonikerSelectAlt').attr('disabled', 'disabled'); + } + }); + } + } + + $(document).ready(function() { + monikerSelection.monikerListener(); + }); + \ No newline at end of file diff --git a/webapp/web/js/imageUpload/imageUploadUtils.js b/webapp/web/js/imageUpload/imageUploadUtils.js index 90c7029d5..0364689a1 100644 --- a/webapp/web/js/imageUpload/imageUploadUtils.js +++ b/webapp/web/js/imageUpload/imageUploadUtils.js @@ -3,9 +3,8 @@ $(document).ready(function(){ // Confirmation alert for photo deletion in image upload and individual templates - $('#photoUploadDefaultImage a.thumbnail,#share-contact a:eq(2)').click(function(){ - //$('#share-contact a [title="delete this relationship"]').click(function(){ - var answer = confirm('Are you sure you want to delete your photo?'); - return answer; + $('#photoUploadDefaultImage a.thumbnail, a.delete-mainImage').click(function(){ + var answer = confirm('Are you sure you want to delete this photo?'); + return answer; }); }); \ No newline at end of file diff --git a/webapp/web/js/jquery_plugins/supersleight.js b/webapp/web/js/jquery_plugins/supersleight.js index 587a45706..c79fe54a7 100644 --- a/webapp/web/js/jquery_plugins/supersleight.js +++ b/webapp/web/js/jquery_plugins/supersleight.js @@ -5,9 +5,9 @@ var supersleight = function() { // local vars var root = false; - var applyPositioning = true; + var applyPositioning = false; // path to a transparent GIF image - var shim = '../images/x.gif'; + var shim = './images/x.gif'; var fnLoadPngs = function() { // if supersleight.limitTo called, limit to specified id diff --git a/webapp/web/js/login/loginUtils.js b/webapp/web/js/login/loginUtils.js index 9fa54dee2..06df844a9 100644 --- a/webapp/web/js/login/loginUtils.js +++ b/webapp/web/js/login/loginUtils.js @@ -9,9 +9,6 @@ $(document).ready(function(){ $('.focus').focus(); // fade in error alerts - $('section#error-alert').css('display', 'none').fadeIn(1500); - - // fade in fash-message when user log out - $('section#flash-message').css('display', 'none').fadeIn(1500); - + $('section#error-alert').css('display', 'none').fadeIn(1500); + }); \ No newline at end of file diff --git a/webapp/web/js/menupage/browseByVClass.js b/webapp/web/js/menupage/browseByVClass.js index eef4eff6a..9a6dacaea 100644 --- a/webapp/web/js/menupage/browseByVClass.js +++ b/webapp/web/js/menupage/browseByVClass.js @@ -15,106 +15,228 @@ var browseByVClass = { // Create references to frequently used elements for convenience initObjects: function() { - this.vgraphVClasses = $('#vgraph-childClasses'); - this.vgraphVClassLinks = $('#vgraph-childClasses li a'); - this.browseVClasses = $('#browse-childClasses'); - this.browseVClassLinks = $('#browse-childClasses li a'); - this.selectedBrowseVClass = $('#browse-childClasses li a.selected'); - this.alphaIndex = $('#alpha-browse-childClass'); - this.alphaIndexLinks = $('#alpha-browse-childClass li a'); - this.selectedAlphaIndex = $('#alpha-browse-childClass li a.selected'); - this.individualsInVClass = $('#individuals-in-childClass ul'); + this.vgraphVClasses = $('#vgraph-classes'); + this.vgraphVClassLinks = $('#vgraph-classes li a'); + this.browseVClasses = $('#browse-classes'); + this.browseVClassLinks = $('#browse-classes li a'); + this.alphaIndex = $('#alpha-browse-individuals'); + this.alphaIndexLinks = $('#alpha-browse-individuals li a'); + this.individualsInVClass = $('#individuals-in-class ul'); + this.individualsContainer = $('#individuals-in-class'); }, // Event listeners. Called on page load bindEventListeners: function() { // Listeners for vClass switching this.vgraphVClassLinks.click(function() { - uri = $(this).attr("data-uri"); + uri = $(this).attr('data-uri'); browseByVClass.getIndividuals(uri); }); this.browseVClassLinks.click(function() { - uri = $(this).attr("data-uri"); + uri = $(this).attr('data-uri'); browseByVClass.getIndividuals(uri); return false; - }) + }); // Listener for alpha switching this.alphaIndexLinks.click(function() { - uri = $('#browse-childClasses li a.selected').attr("data-uri"); - alpha = $(this).attr("data-alpha"); - // alpha = $(this).text().substring(0, 1); + uri = $('#browse-classes li a.selected').attr('data-uri'); + alpha = $(this).attr('data-alpha'); browseByVClass.getIndividuals(uri, alpha); return false; - }) + }); + + // Call the pagination listener + this.paginationListener(); + }, + + // Listener for page switching -- separate from the rest because it needs to be callable + paginationListener: function() { + $('.pagination li a').click(function() { + uri = $('#browse-classes li a.selected').attr('data-uri'); + alpha = $('#alpha-browse-individuals li a.selected').attr('data-alpha'); + page = $(this).attr('data-page'); + browseByVClass.getIndividuals(uri, alpha, page); + return false; + }); }, // Load individuals for default class as specified by menupage template defaultVClass: function() { if ( this.defaultBrowseVClassURI != "false" ) { - this.getIndividuals(this.defaultBrowseVClassUri); + this.getIndividuals(this.defaultBrowseVClassUri, "all", 1, false); } }, - getIndividuals: function(vclassUri, alpha) { + // Where all the magic happens -- gonna fetch me some individuals + getIndividuals: function(vclassUri, alpha, page, scroll) { url = this.dataServiceUrl + encodeURIComponent(vclassUri); if ( alpha && alpha != "all") { - url = url + '&alpha=' + alpha; + url += '&alpha=' + alpha; + } + if ( page ) { + url += '&page=' + page; + } else { + page = 1; + } + if ( typeof scroll === "undefined" ) { + scroll = true; } - // First wipe currently displayed individuals - this.individualsInVClass.empty(); + // Scroll to #menupage-intro page unless told otherwise + if ( scroll != false ) { + // only scroll back up if we're past the top of the #browse-by section + scrollPosition = browseByVClass.getPageScroll(); + browseByOffset = $('#browse-by').offset(); + if ( scrollPosition[1] > browseByOffset.top) { + $.scrollTo('#menupage-intro', 500); + } + } $.getJSON(url, function(results) { - $.each(results.individuals, function(i, item) { - label = results.individuals[i].label; - moniker = results.individuals[i].moniker; - vclassName = results.individuals[i].vclassName; - uri = results.individuals[i].URI; - profileUrl = results.individuals[i].profileUrl; - if ( results.individuals[i].thumbUrl ) { - image = browseByVClass.baseUrl + results.individuals[i].thumbUrl; + individualList = ""; + + // Catch exceptions when empty individuals result set is returned + // This is very likely to happen now since we don't have individual counts for each letter and always allow the result set to be filtered by any letter + if ( results.individuals.length == 0 ) { + browseByVClass.emptyResultSet(results.vclass, alpha) + } else { + $.each(results.individuals, function(i, item) { + label = results.individuals[i].label; + moniker = results.individuals[i].moniker; + vclassName = results.individuals[i].vclassName; + uri = results.individuals[i].URI; + profileUrl = results.individuals[i].profileUrl; + if ( results.individuals[i].thumbUrl ) { + image = browseByVClass.baseUrl + results.individuals[i].thumbUrl; + } + // Build the content of each list item, piecing together each component + listItem = '
  • '; + if ( typeof results.individuals[i].thumbUrl !== "undefined" ) { + listItem += ''+ label +'

    '; + } else { + listItem += '

    '; + } + listItem += ''+ label +'

    '; + // Include the moniker only if it's not empty and not equal to the VClass name + if ( moniker != vclassName && moniker != "" ) { + listItem += ''+ moniker +''; + } + listItem += '
  • '; + // browseByVClass.individualsInVClass.append(listItem); + individualList += listItem; + }) + + // Remove existing content + browseByVClass.wipeSlate(); + + // And then add the new content + browseByVClass.individualsInVClass.append(individualList); + + // Check to see if we're dealing with pagination + if ( results.pages.length ) { + pages = results.pages; + browseByVClass.pagination(pages, page); } - // Build the content of each list item, piecing together each component - listItem = '
  • '; - if ( typeof image !== "undefined" ) { - listItem += ''+ label +''; - } - listItem += '

    '+ label +'

    '; - // Include the moniker only if it's not empty and not equal to the VClass name - if ( moniker != vclassName && moniker != "" ) { - listItem += '

    '+ moniker +'

    '; - } - listItem += '
  • '; - browseByVClass.individualsInVClass.append(listItem); - }) - // set selected class and alpha - browseByVClass.selectedVClass(results.vclass.URI); - browseByVClass.selectedAlpha(alpha); + + selectedClassHeading = '

    '+ results.vclass.name +'

    '; + browseByVClass.individualsContainer.prepend(selectedClassHeading); + + // Set selected class, alpha and page + browseByVClass.selectedVClass(results.vclass.URI); + browseByVClass.selectedAlpha(alpha); + } }); }, + // getPageScroll() by quirksmode.org + getPageScroll: function() { + var xScroll, yScroll; + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && document.documentElement.scrollTop) { + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + return new Array(xScroll,yScroll) + }, + + // Print out the pagination nav if called + pagination: function(pages, page) { + pagination = '