diff --git a/languages/example/themes/wilma/i18n/all_es.properties b/languages/example/themes/wilma/i18n/all_es.properties index 08b3d617..35ac2536 100644 --- a/languages/example/themes/wilma/i18n/all_es.properties +++ b/languages/example/themes/wilma/i18n/all_es.properties @@ -349,7 +349,7 @@ selected_conference = Conferencia Seleccionado years_participation_in = Años de participación en grant_entry_for = autorizará la entrada de -select_existing_pub_or_enter_new = Por favor seleccione una subvención actual en el campo de título o ingresar uno nuevo. +select_existing_pub_or_enter_new = Por favor seleccione una publicación actual en el campo de título o ingresar uno nuevo. unable_to_handle_grant_editing = Esta forma no es capaz de manejar la edición de esta subvención, ya que se asocia con múltiples individuos subvención. grant_type = concesión de la @@ -869,3 +869,7 @@ edit_year_awarded = Editar año concede publication_date_for = fecha de publicación de create_publication_date = Crear fecha de publicación edit_publication_date = Editar fecha de publicación +name_prefix = Prefijo de nombre +name_suffix = Sufijo de nombre +administering_organization_for = administración de la organización para +missing_credential = falta credencial \ No newline at end of file diff --git a/productMods/WEB-INF/resources/startup_listeners.txt b/productMods/WEB-INF/resources/startup_listeners.txt index b0cb3e8d..72b4075e 100644 --- a/productMods/WEB-INF/resources/startup_listeners.txt +++ b/productMods/WEB-INF/resources/startup_listeners.txt @@ -34,12 +34,11 @@ edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdatePermissionSetUris edu.cornell.mannlib.vitro.webapp.servlet.setup.FileGraphSetup -edu.cornell.mannlib.vitro.webapp.servlet.setup.SimpleReasonerSetup - # Invokes process to perform updates to align with ontology changes if needed --> -# Needs to run before submodels are attached and Pellet is set up --> edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateKnowledgeBase +edu.cornell.mannlib.vitro.webapp.servlet.setup.SimpleReasonerSetup + # Must run after JenaDataSourceSetup edu.cornell.mannlib.vitro.webapp.servlet.setup.ThemeInfoSetup diff --git a/productMods/config/listViewConfig-authorInAuthorship.xml b/productMods/config/listViewConfig-authorInAuthorship.xml index 755ceff4..6cc2978d 100644 --- a/productMods/config/listViewConfig-authorInAuthorship.xml +++ b/productMods/config/listViewConfig-authorInAuthorship.xml @@ -199,6 +199,7 @@ ?infoResource core:relatedBy ?editorship . ?editorship a core:Editorship . ?editorship core:relates ?editorObj . + ?editorObj a foaf:Person . ?editorObj rdfs:label ?editor } UNION { ?subject ?property ?authorship . diff --git a/productMods/config/listViewConfig-grantAdministeredBy.xml b/productMods/config/listViewConfig-grantAdministeredBy.xml new file mode 100644 index 00000000..d9a6c58d --- /dev/null +++ b/productMods/config/listViewConfig-grantAdministeredBy.xml @@ -0,0 +1,57 @@ + + + + + + + + PREFIX foaf: <http://xmlns.com/foaf/0.1/> + PREFIX core: <http://vivoweb.org/ontology/core#> + PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + PREFIX obo: <http://purl.obolibrary.org/obo/> + + SELECT DISTINCT ?administratorRole + ?organization + ?organizationLabel + + WHERE { + ?subject ?property ?administratorRole . + ?administratorRole a core:AdministratorRole . + OPTIONAL { ?administratorRole obo:RO_0000052 ?organization . + ?organization a foaf:Organization . + ?organization obo:RO_0000053 ?administratorRole . + ?organization rdfs:label ?organizationLabel . + } + } ORDER BY ?organizationLabel + + + + PREFIX foaf: <http://xmlns.com/foaf/0.1/> + PREFIX core: <http://vivoweb.org/ontology/core#> + PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + PREFIX obo: <http://purl.obolibrary.org/obo/> + + CONSTRUCT { + ?subject ?property ?administratorRole . + ?administratorRole a core:AdministratorRole . + ?administratorRole obo:RO_0000052 ?organization . + ?organization a foaf:Organization . + ?organization obo:RO_0000053 ?administratorRole . + ?organization rdfs:label ?organizationLabel . + } WHERE { + { + ?subject ?property ?administratorRole . + ?administratorRole a core:AdministratorRole . + } UNION { + ?subject ?property ?administratorRole . + ?administratorRole a core:AdministratorRole . + ?administratorRole obo:RO_0000052 ?organization . + ?organization a foaf:Organization . + ?organization obo:RO_0000053 ?administratorRole . + ?organization rdfs:label ?organizationLabel . + } + } + + + + diff --git a/productMods/templates/freemarker/body/partials/individual/propStatement-grantAdministeredBy.ftl b/productMods/templates/freemarker/body/partials/individual/propStatement-grantAdministeredBy.ftl new file mode 100644 index 00000000..08cd3d98 --- /dev/null +++ b/productMods/templates/freemarker/body/partials/individual/propStatement-grantAdministeredBy.ftl @@ -0,0 +1,26 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + +<#-- + + This template must be self-contained and not rely on other variables set for the individual page, because it + is also used to generate the property statement during a deletion. + --> +<#import "lib-sequence.ftl" as s> +<#import "lib-datetime.ftl" as dt> +<@showAdministrator statement /> + +<#-- Use a macro to keep variable assignments local; otherwise the values carry over to the + next statement --> +<#macro showAdministrator statement> + + <#local linkedIndividual> + <#if statement.organization??> + ${statement.organizationLabel!""} + <#else> + ${i18n().missing_organization} + + + + ${linkedIndividual!} + + diff --git a/productMods/templates/freemarker/body/partials/individual/propStatement-issuedCredential.ftl b/productMods/templates/freemarker/body/partials/individual/propStatement-issuedCredential.ftl index 1b12358a..0f3c9398 100644 --- a/productMods/templates/freemarker/body/partials/individual/propStatement-issuedCredential.ftl +++ b/productMods/templates/freemarker/body/partials/individual/propStatement-issuedCredential.ftl @@ -17,7 +17,7 @@ <#if statement.credential??> ${statement.credentialLabel!statement.issuedCredentialLabel!statement.credentialLocal!} <#else> - ${statement.issuedCredentialLabel!"missing credential"} + ${statement.issuedCredentialLabel!"${i18n().missing_credential}"} diff --git a/productMods/templates/freemarker/body/partials/individual/propStatement-mailingAddress.ftl b/productMods/templates/freemarker/body/partials/individual/propStatement-mailingAddress.ftl index f5a45eec..5b18d090 100644 --- a/productMods/templates/freemarker/body/partials/individual/propStatement-mailingAddress.ftl +++ b/productMods/templates/freemarker/body/partials/individual/propStatement-mailingAddress.ftl @@ -13,9 +13,17 @@ <#macro showAddress statement> <#if statement.street?has_content> -

- ${statement.street} -

+ <#if statement.street?contains(";") > + <#list statement.street?split("; ") as lines> +

+ ${lines} +

+ + <#else> +

+ ${statement.street} +

+ <#if ( statement.country?has_content && (statement.country == "US" || statement.country?contains("United States") || statement.country?contains("U.S.") || statement.country?contains("U.S.A.") || statement.country?contains("USA")))> @@ -23,7 +31,7 @@ <#local cityStateZip><@s.join [ cityState!, statement.postalCode!], " " /> <#if cityStateZip?has_content>

${cityStateZip}

-

${statement.country!}

+

${statement.country!}

<#else> <#if statement.locality?has_content> @@ -42,7 +50,7 @@

<#if statement.country?has_content> -

+

${statement.country}

diff --git a/productMods/templates/freemarker/edit/forms/addFullNameToPerson.ftl b/productMods/templates/freemarker/edit/forms/addFullNameToPerson.ftl index 3956993c..23a3f0ea 100644 --- a/productMods/templates/freemarker/edit/forms/addFullNameToPerson.ftl +++ b/productMods/templates/freemarker/edit/forms/addFullNameToPerson.ftl @@ -65,13 +65,13 @@

- +

- +

diff --git a/productMods/templates/freemarker/edit/forms/addOrcidIdToPerson.ftl b/productMods/templates/freemarker/edit/forms/addOrcidIdToPerson.ftl index eca559a1..b52c52fd 100644 --- a/productMods/templates/freemarker/edit/forms/addOrcidIdToPerson.ftl +++ b/productMods/templates/freemarker/edit/forms/addOrcidIdToPerson.ftl @@ -58,7 +58,8 @@

- + +

diff --git a/productMods/templates/freemarker/edit/forms/grantAdministeredBy.ftl b/productMods/templates/freemarker/edit/forms/grantAdministeredBy.ftl new file mode 100644 index 00000000..dfba927f --- /dev/null +++ b/productMods/templates/freemarker/edit/forms/grantAdministeredBy.ftl @@ -0,0 +1,136 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + +<#-- this is in request.subject.name --> + +<#-- leaving this edit/add mode code in for reference in case we decide we need it --> + +<#import "lib-vivo-form.ftl" as lvf> + +<#--Retrieve certain edit configuration information--> +<#if editConfiguration.objectUri?has_content> + <#assign editMode = "edit"> +<#else> + <#assign editMode = "add"> + + +<#--The blank sentinel indicates what value should be put in a URI when no autocomplete result has been selected. +If the blank value is non-null or non-empty, n3 editing for an existing object will remove the original relationship +if nothing is selected for that object--> +<#assign blankSentinel = "" /> +<#if editConfigurationConstants?has_content && editConfigurationConstants?keys?seq_contains("BLANK_SENTINEL")> + <#assign blankSentinel = editConfigurationConstants["BLANK_SENTINEL"] /> + + +<#--This flag is for clearing the label field on submission for an existing object being selected from autocomplete. +Set this flag on the input acUriReceiver where you would like this behavior to occur. --> +<#assign flagClearLabelForExisting = "flagClearLabelForExisting" /> + +<#assign htmlForElements = editConfiguration.pageData.htmlForElements /> + +<#--Retrieve variables needed--> +<#assign existingOrgValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "existingOrganization") /> +<#assign orgLabelValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "orgLabel") /> +<#assign orgLabelDisplayValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "orgLabelDisplay") /> + +<#--If edit submission exists, then retrieve validation errors if they exist--> +<#if editSubmission?has_content && editSubmission.submissionExists = true && editSubmission.validationErrors?has_content> + <#assign submissionErrors = editSubmission.validationErrors/> + + +<#if editMode == "edit"> + <#assign titleVerb="${i18n().edit_capitalized}"> + <#assign submitButtonText="${i18n().save_changes}"> + <#assign disabledVal="disabled"> +<#else> +<#assign titleVerb="${i18n().create_capitalized}"> +<#assign submitButtonText="${i18n().create_entry}"> + <#assign disabledVal=""/> + + +<#assign requiredHint = " *" /> + +

${titleVerb} ${i18n().administering_organization_for} ${editConfiguration.subjectName}

+ +<#--Display error messages if any--> +<#if submissionErrors?has_content> + <#if orgLabelDisplayValue?has_content > + <#assign orgLabelValue = orgLabelDisplayValue /> + + + + + +<@lvf.unsupportedBrowser urls.base /> + +
+ + +

+ + + +

+ +
+

+ + + (${i18n().verify_match_capitalized} ${i18n().or} + ${i18n().change_selection}) +

+ +
+ <#assign htmlForElements = editConfiguration.pageData.htmlForElements /> + + + +

+ ${i18n().or} + ${i18n().cancel_link} +

+ +

* ${i18n().required_fields}

+ + + + + + + + +${stylesheets.add('')} +${stylesheets.add('')} +${stylesheets.add('')} + +${scripts.add('', + '', + '', + '', + '', + '')} + + + diff --git a/productMods/templates/freemarker/edit/forms/js/addOrcidIdToPersonUtils.js b/productMods/templates/freemarker/edit/forms/js/addOrcidIdToPersonUtils.js index 5a9cffad..b979c348 100644 --- a/productMods/templates/freemarker/edit/forms/js/addOrcidIdToPersonUtils.js +++ b/productMods/templates/freemarker/edit/forms/js/addOrcidIdToPersonUtils.js @@ -12,6 +12,7 @@ var addOrcidIdToPersonUtils = { this.form = $('#personHasOrcidId'); this.orcidId = $('#orcidId'); + this.orcidIdDisplay = $('#orcidIdDisplay'); }, @@ -25,10 +26,10 @@ var addOrcidIdToPersonUtils = { buildOrcidIdURL: function() { - var orcidBase = "http://www.orcid.org/"; + var orcidBase = "http://orcid.org/"; var orcidIdVal = ""; - if ( this.orcidId.val().length > 0 ) { - orcidIdVal = orcidBase + this.orcidId.val(); + if ( this.orcidIdDisplay.val().length > 0 ) { + orcidIdVal = orcidBase + this.orcidIdDisplay.val(); this.orcidId.val(orcidIdVal); } }, diff --git a/productMods/templates/freemarker/edit/forms/js/mailingAddressUtils.js b/productMods/templates/freemarker/edit/forms/js/mailingAddressUtils.js new file mode 100644 index 00000000..d2104330 --- /dev/null +++ b/productMods/templates/freemarker/edit/forms/js/mailingAddressUtils.js @@ -0,0 +1,51 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + + +var mailingAddressUtils = { + + onLoad: function(editMode) { + this.initObjectReferences(); + this.bindEventListeners(); + + if ( editMode != "add" ) { + this.setStreetAddressDisplayFields(); + } + }, + + initObjectReferences: function() { + + this.form = $('#personHasMailingAddress'); + this.street1 = $('#streetAddressOne'); + this.street2 = $('#streetAddressTwo'); + this.streetAddress = $('#streetAddress'); + + }, + + bindEventListeners: function() { + this.idCache = {}; + + this.form.submit(function() { + mailingAddressUtils.setStreetAddressField(); + }); + + }, + + // the vcard only has one address field, so combine the two + // displayed addresses into the hidden field which gets asserted in the N3 + setStreetAddressField: function() { + var tempString = this.street1.val() + "; " + this.street2.val(); + this.streetAddress.val(tempString); + }, + + // in edit mode, take the asserted streetAddress value and parse it into + // the two displayed address fields + setStreetAddressDisplayFields: function() { + var tempString = this.streetAddress.val(); + var lineOne = tempString.substring(0,tempString.lastIndexOf(";")); + var lineTwo = tempString.substring(tempString.lastIndexOf(";") + 2); + + this.street1.val(lineOne); + this.street2.val(lineTwo); + } + +} \ No newline at end of file diff --git a/productMods/templates/freemarker/edit/forms/personHasIssuedCredential.ftl b/productMods/templates/freemarker/edit/forms/personHasIssuedCredential.ftl index d542fd2d..b921ebcf 100644 --- a/productMods/templates/freemarker/edit/forms/personHasIssuedCredential.ftl +++ b/productMods/templates/freemarker/edit/forms/personHasIssuedCredential.ftl @@ -53,7 +53,7 @@ Set this flag on the input acUriReceiver where you would like this behavior to o <#assign requiredHint = " *" /> <#assign yearHint = "(${i18n().year_hint_format})" /> -

${titleVerb} ${i18n().credentials} ${editConfiguration.subjectName}

+

${titleVerb} ${i18n().credentials} ${i18n().for} ${editConfiguration.subjectName}

<#--Display error messages if any--> <#if submissionErrors?has_content> diff --git a/productMods/templates/freemarker/edit/forms/subjectHasMailingAddress.ftl b/productMods/templates/freemarker/edit/forms/subjectHasMailingAddress.ftl index 99236069..e44041ea 100644 --- a/productMods/templates/freemarker/edit/forms/subjectHasMailingAddress.ftl +++ b/productMods/templates/freemarker/edit/forms/subjectHasMailingAddress.ftl @@ -68,13 +68,19 @@
-
+

- - + +

+

+ + + +

+

@@ -107,6 +113,12 @@

+ + ${stylesheets.add('')} ${stylesheets.add('')} @@ -114,6 +126,7 @@ ${stylesheets.add('', '', + '', '', '')} diff --git a/rdf/display/everytime/PropertyConfig.n3 b/rdf/display/everytime/PropertyConfig.n3 index 756165ea..f92b8f4e 100644 --- a/rdf/display/everytime/PropertyConfig.n3 +++ b/rdf/display/everytime/PropertyConfig.n3 @@ -411,13 +411,29 @@ local:issuedCredentialConfig a :ObjectPropertyDisplayConfig ; vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.PersonHasIssuedCredentialGenerator"^^ ; :propertyGroup . +local:grantAdministeredByContext a :ConfigContext ; + :hasConfiguration local:grantAdministeredByConfig ; + :configContextFor vivo:relates ; + :qualifiedByDomain vivo:Grant ; + :qualifiedBy vivo:AdministratorRole . + +local:grantAdministeredByConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-grantAdministeredBy.xml"^^xsd:string ; + :displayName "grant administered by" ; + vitro:displayRankAnnot 1; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + vitro:customEntryFormAnnot "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.GrantAdministeredByGenerator"^^ ; + :propertyGroup . + ### vcard properties ### local:mailingAddressContext a :ConfigContext ; :hasConfiguration local:mailingAddressConfig ; :configContextFor ; :qualifiedByDomain ; - :qualifiedBy . + :qualifiedBy ; + :qualifiedByRoot . local:mailingAddressConfig a :ObjectPropertyDisplayConfig ; :listViewConfigFile "listViewConfig-mailingAddress.xml"^^xsd:string ; @@ -432,6 +448,7 @@ local:mailingAddressContext a :ConfigContext ; :hasConfiguration local:mailingAddressConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:mailingAddressConfig a :ObjectPropertyDisplayConfig ; @@ -447,6 +464,7 @@ local:personTelephoneContext a :ConfigContext ; :hasConfiguration local:personTelephoneConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:personTelephoneConfig a :ObjectPropertyDisplayConfig ; @@ -462,6 +480,7 @@ local:orgTelephoneContext a :ConfigContext ; :hasConfiguration local:orgTelephoneConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:orgTelephoneConfig a :ObjectPropertyDisplayConfig ; @@ -477,6 +496,7 @@ local:personFaxContext a :ConfigContext ; :hasConfiguration local:personFaxConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:personFaxConfig a :ObjectPropertyDisplayConfig ; @@ -492,6 +512,7 @@ local:orgFaxContext a :ConfigContext ; :hasConfiguration local:orgFaxConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:orgFaxConfig a :ObjectPropertyDisplayConfig ; @@ -507,6 +528,7 @@ local:additionalEmailContext a :ConfigContext ; :hasConfiguration local:additionalEmailConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:additionalEmailConfig a :ObjectPropertyDisplayConfig ; @@ -522,6 +544,7 @@ local:primaryEmailContext a :ConfigContext ; :hasConfiguration local:primaryEmailConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:primaryEmailConfig a :ObjectPropertyDisplayConfig ; @@ -537,6 +560,7 @@ local:webpageContext a :ConfigContext ; :hasConfiguration local:webpageConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:webpageConfig a :ObjectPropertyDisplayConfig ; @@ -552,6 +576,7 @@ local:webpageContext a :ConfigContext ; :hasConfiguration local:webpageConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:webpageConfig a :ObjectPropertyDisplayConfig ; @@ -567,6 +592,7 @@ local:fullNameContext a :ConfigContext ; :hasConfiguration local:fullNameConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:fullNameConfig a :ObjectPropertyDisplayConfig ; @@ -582,6 +608,7 @@ local:preferredTitleContext a :ConfigContext ; :hasConfiguration local:preferredTitleConfig ; :configContextFor ; :qualifiedByDomain ; + :qualifiedByRoot ; :qualifiedBy . local:preferredTitleConfig a :ObjectPropertyDisplayConfig ; @@ -637,6 +664,104 @@ local:inEventSeriesConfig a :ObjectPropertyDisplayConfig ; vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; :propertyGroup . +local:eventLocationContext a :ConfigContext ; + :hasConfiguration local:eventLocationConfig ; + :configContextFor ; + :qualifiedByDomain ; + :qualifiedBy vivo:GeographicLocation . + +local:eventLocationConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-default.xml"^^xsd:string ; + :displayName "has geographic location" ; + vitro:displayRankAnnot 2; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + :propertyGroup . + +local:courseOfferedByContext a :ConfigContext ; + :hasConfiguration local:courseOfferedByConfig ; + :configContextFor vivo:offeredBy ; + :qualifiedByDomain vivo:Course ; + :qualifiedBy . + +local:courseOfferedByConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-default.xml"^^xsd:string ; + :displayName "offered by" ; + vitro:displayRankAnnot 2; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + :propertyGroup . + +local:orgOffersCourseContext a :ConfigContext ; + :hasConfiguration local:orgOffersCourseConfig ; + :configContextFor vivo:offers ; + :qualifiedByDomain ; + :qualifiedBy vivo:Course . + +local:orgOffersCourseConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-default.xml"^^xsd:string ; + :displayName "offers course" ; + vitro:displayRankAnnot 2; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + :propertyGroup . + +local:collegeOffersDegreeContext a :ConfigContext ; + :hasConfiguration local:collegeOffersDegreeConfig ; + :configContextFor vivo:offers ; + :qualifiedByDomain vivo:College ; + :qualifiedBy vivo:AcademicDegree . + +local:collegeOffersDegreeConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-default.xml"^^xsd:string ; + :displayName "offers degree" ; + vitro:displayRankAnnot 2; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + :propertyGroup . + +local:deptOffersDegreeContext a :ConfigContext ; + :hasConfiguration local:debtOffersDegreeConfig ; + :configContextFor vivo:offers ; + :qualifiedByDomain vivo:AcademicDepartment ; + :qualifiedBy vivo:AcademicDegree . + +local:deptOffersDegreeConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-default.xml"^^xsd:string ; + :displayName "offers degree" ; + vitro:displayRankAnnot 2; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + :propertyGroup . + +local:uniOffersDegreeContext a :ConfigContext ; + :hasConfiguration local:uniOffersDegreeConfig ; + :configContextFor vivo:offers ; + :qualifiedByDomain vivo:University ; + :qualifiedBy vivo:AcademicDegree . + +local:uniOffersDegreeConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-default.xml"^^xsd:string ; + :displayName "offers degree" ; + vitro:displayRankAnnot 2; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + :propertyGroup . + +local:grantAwardedByContext a :ConfigContext ; + :hasConfiguration local:grantAwardedByConfig ; + :configContextFor vivo:assignedBy ; + :qualifiedByDomain vivo:Grant ; + :qualifiedBy . + +local:grantAwardedByConfig a :ObjectPropertyDisplayConfig ; + :listViewConfigFile "listViewConfig-default.xml"^^xsd:string ; + :displayName "grant awarded by" ; + vitro:displayRankAnnot 2; + vitro:hiddenFromDisplayBelowRoleLevelAnnot role:public ; + vitro:prohibitedFromUpdateBelowRoleLevelAnnot role:public ; + :propertyGroup . + local:awardOrHonorReceiptsContext a :ConfigContext ; :hasConfiguration local:awardOrHonorReceiptsConfig ; :configContextFor ; diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GrantAdministeredByGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GrantAdministeredByGenerator.java new file mode 100644 index 00000000..8fea8fd4 --- /dev/null +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/GrantAdministeredByGenerator.java @@ -0,0 +1,123 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpSession; + +import com.hp.hpl.jena.vocabulary.XSD; + +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.AutocompleteRequiredInputValidator; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeIntervalValidationVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClassesWithParent; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ConstantFieldOptions; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldOptions; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.IndividualsViaVClassOptions; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; + +public class GrantAdministeredByGenerator extends VivoBaseGenerator implements + EditConfigurationGenerator { + + public GrantAdministeredByGenerator() {} + + @Override + public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, + HttpSession session) throws Exception { + + EditConfigurationVTwo conf = new EditConfigurationVTwo(); + + initBasics(conf, vreq); + initPropertyParameters(vreq, session, conf); + initObjectPropForm(conf, vreq); + + conf.setTemplate("grantAdministeredBy.ftl"); + + conf.setVarNameForSubject("grant"); + conf.setVarNameForPredicate("predicate"); + conf.setVarNameForObject("adminRole"); + + conf.setN3Required( Arrays.asList( n3ForNewAdminRole) ); + conf.setN3Optional( Arrays.asList( n3ForNewAdminOrganization, + n3ForExistingAdminOrganization ) ); + + conf.addNewResource("newOrganization", DEFAULT_NS_FOR_NEW_RESOURCE); + conf.addNewResource("adminRole", DEFAULT_NS_FOR_NEW_RESOURCE); + + conf.setUrisOnform(Arrays.asList("existingOrganization")); + conf.setLiteralsOnForm(Arrays.asList("orgLabel", "orgLabelDisplay" )); + + conf.addSparqlForExistingLiteral("orgLabel", orgLabelQuery); + conf.addSparqlForExistingUris("existingOrganization", existingOrganizationQuery); + + + conf.addField( new FieldVTwo(). // options will be added in browser by auto complete JS + setName("existingOrganization") + ); + + conf.addField( new FieldVTwo(). + setName("orgLabel"). + setRangeDatatypeUri(XSD.xstring.toString() ). + setValidators( list("datatype:" + XSD.xstring.toString()) ) + ); + + conf.addField( new FieldVTwo(). + setName("orgLabelDisplay"). + setRangeDatatypeUri(XSD.xstring.toString() ). + setValidators( list("datatype:" + XSD.xstring.toString())) + ); + + conf.addValidator(new AntiXssValidation()); + conf.addValidator(new AutocompleteRequiredInputValidator("existingOrganization", "orgLabel")); + +// addFormSpecificData(conf, vreq); + prepare(vreq, conf); + return conf; + } + + /* N3 assertions */ + + final static String n3ForNewAdminRole = + "@prefix vivo: <" + vivoCore + "> . \n\n" + + "?grant vivo:relates ?adminRole . \n" + + "?adminRole a vivo:AdministratorRole . \n" + + "?adminRole vivo:relatedBy ?grant . " ; + + final static String n3ForNewAdminOrganization = + "@prefix vivo: <" + vivoCore + "> . \n\n" + + "?adminRole ?newOrganization . \n" + + "?newOrganization a . \n" + + "?newOrganization ?adminRole . \n" + + "?newOrganization <"+ label + "> ?orgLabel ."; + + final static String n3ForExistingAdminOrganization = + "@prefix vivo: <" + vivoCore + "> . \n\n" + + "?adminRole ?existingOrganization . \n" + + "?existingOrganization a . \n" + + "?existingOrganization ?adminRole . " ; + + /* Queries for editing an existing entry */ + + final static String existingOrganizationQuery = + "PREFIX vivo: \n" + + "SELECT ?existingOrganization WHERE { \n" + + " ?adminRole ?existingOrganization . \n" + + " ?existingOrganization a . \n" + + "}"; + + final static String orgLabelQuery = + "PREFIX vivo: \n" + + "SELECT ?existingOrganizationLabel WHERE { \n" + + " ?adminRole ?existingOrganization . \n" + + " ?existingOrganization a . \n" + + " ?existingOrganization <" + label + "> ?existingOrganizationLabel . \n" + + "}"; + +} diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasIssuedCredentialGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasIssuedCredentialGenerator.java index 760b04c3..7cc69d63 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasIssuedCredentialGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/PersonHasIssuedCredentialGenerator.java @@ -117,12 +117,6 @@ public class PersonHasIssuedCredentialGenerator extends VivoBaseGenerator implem setValidators( list("datatype:" + XSD.xstring.toString())) ); - conf.addField( new FieldVTwo(). - setName("orgLabelDisplay"). - setRangeDatatypeUri(XSD.xstring.toString() ). - setValidators( list("datatype:" + XSD.xstring.toString())) - ); - conf.addField( new FieldVTwo(). setName("credentialLabelDisplay"). setRangeDatatypeUri(XSD.xstring.toString() ). @@ -184,8 +178,8 @@ public class PersonHasIssuedCredentialGenerator extends VivoBaseGenerator implem final static String n3ForExistingCredentialAssertion = "@prefix vivo: <" + vivoCore + "> . \n\n" + "?issuedCredential vivo:relates ?existingCredential . \n" + - "?existingCredential a <" + credentialTypeClass + "> . \n" + - "?credential a ?credentialType . \n" + +/* "?existingCredential a <" + credentialTypeClass + "> . \n" + + "?existingCredential a ?credentialType . \n" + */ "?existingCredential vivo:relatedBy ?issuedCredential . " ; final static String n3ForYearCredentialed = diff --git a/themes/wilma/i18n/all.properties b/themes/wilma/i18n/all.properties index 4c6ffc75..158f250a 100644 --- a/themes/wilma/i18n/all.properties +++ b/themes/wilma/i18n/all.properties @@ -355,7 +355,7 @@ selected_conference = Selected Conference years_participation_in = Years of Participation in grant_entry_for = grant entry for -select_existing_pub_or_enter_new = Please select an existing grant in the Title field or enter a new one. +select_existing_pub_or_enter_new = Please select an existing publication in the Title field or enter a new one. unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals. grant_type = grant Type @@ -875,4 +875,7 @@ edit_year_awarded = Edit year awarded publication_date_for = publication date for create_publication_date = Create publication date edit_publication_date = Edit publication date - +name_prefix = Name Prefix +name_suffix = Name Suffix +administering_organization_for = administering organization for +missing_credential = missing credential \ No newline at end of file