custom form changes for NIHVIVO-601, 764 and 2602 plus all related subtasks
This commit is contained in:
parent
b7b7607242
commit
4782e06ff3
11 changed files with 1161 additions and 115 deletions
|
@ -1,27 +1,197 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
<#--Two stage form for service provider role-->
|
||||
|
||||
<#--
|
||||
Required Values to be set for each form that includes addRoleToPersonTwoStage.ftl are:
|
||||
roleDescriptor.
|
||||
The other required values (roleType, optionsType, objectClassUri, and literalOptions are
|
||||
set in the JAVA class corresponding to the form, e.g. AddPresenterRoleToPersonGenerator.java.
|
||||
<#-- this is in request.subject.name -->
|
||||
|
||||
Optional values can be set, but each of these has default values
|
||||
set in addRoleToPersonTwoStage.ftl:
|
||||
<#-- leaving this edit/add mode code in for reference in case we decide we need it -->
|
||||
|
||||
buttonText
|
||||
typeSelectorLabel
|
||||
numDateFields
|
||||
showRoleLAbelField
|
||||
roleExamples-->
|
||||
<#import "lib-vivo-form.ftl" as lvf>
|
||||
|
||||
<#--Retrieve certain edit configuration information-->
|
||||
<#if editConfiguration.objectUri?has_content>
|
||||
<#assign editMode = "edit">
|
||||
<#else>
|
||||
<#assign editMode = "add">
|
||||
</#if>
|
||||
|
||||
<#assign htmlForElements = editConfiguration.pageData.htmlForElements />
|
||||
|
||||
<#--Retrieve variables needed-->
|
||||
<#assign presentationValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "presentation") />
|
||||
<#assign presentationLabelValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "presentationLabel") />
|
||||
<#assign presentationTypeValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "presentationType") />
|
||||
<#assign roleLabelValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "roleLabel") />
|
||||
<#assign conferenceValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "conference") />
|
||||
<#assign conferenceLabelValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "conferenceLabel") />
|
||||
|
||||
<#--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>
|
||||
|
||||
<#if editMode == "edit">
|
||||
<#assign titleVerb="Edit">
|
||||
<#assign submitButtonText="Save Changes">
|
||||
<#assign disabledVal="disabled">
|
||||
<#else>
|
||||
<#assign titleVerb="Create">
|
||||
<#assign submitButtonText="Create Entry">
|
||||
<#assign disabledVal=""/>
|
||||
</#if>
|
||||
|
||||
<#assign requiredHint = "<span class='requiredHint'> *</span>" />
|
||||
<#assign yearHint = "<span class='hint'>(YYYY)</span>" />
|
||||
|
||||
<h2>${titleVerb} award or honor for ${editConfiguration.subjectName}</h2>
|
||||
|
||||
<#--Display error messages if any-->
|
||||
<#if submissionErrors?has_content>
|
||||
<section id="error-alert" role="alert">
|
||||
<img src="${urls.images}/iconAlert.png" width="24" height="24" alert="Error alert icon" />
|
||||
<p>
|
||||
<#--Checking if any required fields are empty-->
|
||||
<#if lvf.submissionErrorExists(editSubmission, "presentationLabel")>
|
||||
Please select an existing value or enter a new value in the Name field.
|
||||
</#if>
|
||||
<#if lvf.submissionErrorExists(editSubmission, "roleLabel")>
|
||||
Please enter a new value in the Role field.
|
||||
</#if>
|
||||
<#list submissionErrors?keys as errorFieldName>
|
||||
<#if errorFieldName == "startField">
|
||||
<#if submissionErrors[errorFieldName]?contains("before")>
|
||||
The Start Year must be earlier than the End Year.
|
||||
<#else>
|
||||
${submissionErrors[errorFieldName]}
|
||||
</#if>
|
||||
|
||||
<#elseif errorFieldName == "endField">
|
||||
<#if submissionErrors[errorFieldName]?contains("after")>
|
||||
The End Year must be later than the Start Year.
|
||||
<#else>
|
||||
${submissionErrors[errorFieldName]}
|
||||
</#if>
|
||||
</#if><br />
|
||||
</#list>
|
||||
</p>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
<@lvf.unsupportedBrowser urls.base />
|
||||
|
||||
<section id="addPresenterRoleToPerson" role="region">
|
||||
|
||||
<form id="addPresenterRoleToPerson" class="customForm noIE67" action="${submitUrl}" role="add/edit Presentation">
|
||||
<p class="inline">
|
||||
<label for="presentationType">Presentation Type<#if editMode != "edit"> ${requiredHint}<#else>:</#if></label>
|
||||
<#assign presentationTypeOpts = editConfiguration.pageData.presentationType />
|
||||
<#if editMode == "edit">
|
||||
<#list presentationTypeOpts?keys as key>
|
||||
<#if presentationTypeValue = key >
|
||||
<span class="readOnly" id="typeSelectorSpan">${presentationTypeOpts[key]}</span>
|
||||
<input type="hidden" id="typeSelectorInput" name="presentationType" acGroupName="presentation" value="${presentationTypeValue}">
|
||||
</#if>
|
||||
</#list>
|
||||
<#else>
|
||||
<select id="typeSelector" name="presentationType" acGroupName="presentation">
|
||||
<option value="" selected="selected">Select one</option>
|
||||
<#list presentationTypeOpts?keys as key>
|
||||
<option value="${key}" <#if presentationTypeValue = key>selected</#if>> <#if presentationTypeOpts[key] == "Other">Presentation<#else>${presentationTypeOpts[key]}</#if></option>
|
||||
</#list>
|
||||
</select>
|
||||
</#if>
|
||||
</p>
|
||||
|
||||
<div class="fullViewOnly">
|
||||
<p>
|
||||
<label for="presentation">### Name ${requiredHint}</label>
|
||||
<input class="acSelector" size="50" type="text" id="presentation" acGroupName="presentation" name="presentationLabel" value="${presentationLabelValue}">
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="presentation">
|
||||
<p class="inline">
|
||||
<label></label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="presentationUri" name="presentation" value="${presentationValue}" />
|
||||
</div>
|
||||
<p><label for="roleLabel">Role in ### ${requiredHint} <span class="hint">(e.g., Moderator, Speaker, Panelist)</span></label>
|
||||
<input size="50" type="text" id="roleLabel" name="roleLabel" value="${roleLabelValue}" />
|
||||
</p>
|
||||
<p>
|
||||
<label for="org">Presented At</label>
|
||||
<input class="acSelector" size="50" acGroupName="conference" type="text" id="conference" name="conferenceLabel" value="${conferenceLabelValue}" />
|
||||
</p>
|
||||
<div class="acSelection" acGroupName="conference">
|
||||
<p class="inline">
|
||||
<label>Selected Conference:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="conferenceUri" name="conference" value="${conferenceValue}" />
|
||||
</div>
|
||||
<p>
|
||||
<h4>Years of Participation in ###</h4>
|
||||
</p>
|
||||
<#--Need to draw edit elements for dates here-->
|
||||
<#assign htmlForElements = editConfiguration.pageData.htmlForElements />
|
||||
<#if htmlForElements?keys?seq_contains("startField")>
|
||||
<label class="dateTime" for="startField">Start</label>
|
||||
${htmlForElements["startField"]} ${yearHint}
|
||||
</#if>
|
||||
<br/>
|
||||
<#if htmlForElements?keys?seq_contains("endField")>
|
||||
<label class="dateTime" for="endField">End</label>
|
||||
${htmlForElements["endField"]} ${yearHint}
|
||||
</#if>
|
||||
<#--End draw elements-->
|
||||
|
||||
<input type="hidden" id="editKey" name="editKey" value="${editKey}"/>
|
||||
|
||||
</div>
|
||||
|
||||
<p class="submit">
|
||||
<input type="submit" class="submit" value="${submitButtonText}"/><span class="or"> or </span>
|
||||
<a class="cancel" href="${cancelUrl}" title="Cancel">Cancel</a>
|
||||
</p>
|
||||
|
||||
<p id="requiredLegend" class="requiredHint">* required fields</p>
|
||||
|
||||
<#-- hide the html that gets written, and use java script to pass the value between the two -->
|
||||
<div class="hidden">
|
||||
<#if htmlForElements?keys?seq_contains("yearAwarded")>
|
||||
${htmlForElements["yearAwarded"]}
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var customFormData = {
|
||||
acUrl: '${urls.base}/autocomplete?tokenize=true&stem=true',
|
||||
acTypes: {conference: 'http://purl.org/ontology/bibo/Conference'},
|
||||
editMode: '${editMode}',
|
||||
defaultTypeName: 'presentation',
|
||||
multipleTypeNames: {presentation: 'presentation', conference: 'conference'},
|
||||
baseHref: '${urls.base}/individual?uri='
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css" />')}
|
||||
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/templates/freemarker/edit/forms/css/customForm.css" />')}
|
||||
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/templates/freemarker/edit/forms/css/customFormWithAutocomplete.css" />')}
|
||||
|
||||
${scripts.add('<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/js/customFormUtils.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/js/extensions/String.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/js/browserUtils.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/jquery.bgiframe.pack.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/templates/freemarker/edit/forms/js/customFormWithAutocomplete.js"></script>')}
|
||||
|
||||
|
||||
<#--Variable assignments for Add Clinical Role To Person-->
|
||||
<#assign roleDescriptor = "presentation" />
|
||||
<#assign typeSelectorLabel = "presentation type" />
|
||||
<#assign buttonText = "Presentation Role" />
|
||||
<#assign roleExamples = "<span class='hint'> (e.g., Moderator, Speaker, Panelist)</span>" />
|
||||
|
||||
<#--Each of the two stage forms will include the form below-->
|
||||
<#include "addRoleToPersonTwoStage.ftl">
|
|
@ -23,6 +23,24 @@
|
|||
<#assign publicationTypeValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "pubType") />
|
||||
<#assign titleValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "title") />
|
||||
<#assign pubUriValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "pubUri") />
|
||||
<#assign collectionValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "collection") />
|
||||
<#assign collectionUriValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "collectionUri") />
|
||||
<#assign bookValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "book") />
|
||||
<#assign bookUriValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "bookUri") />
|
||||
<#assign conferenceValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "conference") />
|
||||
<#assign conferenceUriValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "conferenceUri") />
|
||||
<#assign eventValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "event") />
|
||||
<#assign eventUriValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "eventUri") />
|
||||
<#assign editorValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "editor") />
|
||||
<#assign editorUriValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "editorUri") />
|
||||
<#assign publisherValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "publisher") />
|
||||
<#assign publisherUriValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "publisherUri") />
|
||||
<#assign localeValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "locale") />
|
||||
<#assign volumeValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "volume") />
|
||||
<#assign numberValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "number") />
|
||||
<#assign issueValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "issue") />
|
||||
<#assign startPageValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "startPage") />
|
||||
<#assign endPageValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "endPage") />
|
||||
|
||||
<#if editMode == "edit">
|
||||
<#assign titleVerb="Edit">
|
||||
|
@ -74,11 +92,11 @@
|
|||
</p>
|
||||
<div class="fullViewOnly">
|
||||
<p>
|
||||
<label for="relatedIndLabel">Title ${requiredHint}</label>
|
||||
<input class="acSelector" size="50" type="text" id="title" name="title" acGroupName="publication" value="${titleValue}" />
|
||||
<label for="title">Title ${requiredHint}</label>
|
||||
<input class="acSelector" size="60" type="text" id="title" name="title" acGroupName="publication" value="${titleValue}" />
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="publication" >
|
||||
<div class="acSelection" acGroupName="publication" id="pubAcSelection">
|
||||
<p class="inline">
|
||||
<label>Selected Publication:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
|
@ -87,8 +105,142 @@
|
|||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="pubUri" name="pubUri" value="${pubUriValue}" />
|
||||
</div>
|
||||
<div id="fieldsForNewPub">
|
||||
<#-- Published In: collection -->
|
||||
<p>
|
||||
<label for="collection">Published in</label>
|
||||
<input class="acSelector" size="50" type="text" id="collection" name="collection" acGroupName="collection" value="${collectionValue}" />
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="collection" >
|
||||
<p class="inline">
|
||||
<label>Selected Venue:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="collectionUri" name="collectionUri" value="${collectionUriValue}" />
|
||||
</div>
|
||||
|
||||
<#-- Published In: book -->
|
||||
<p>
|
||||
<label for="book">Published in</label>
|
||||
<input class="acSelector" size="50" type="text" id="book" name="book" acGroupName="book" value="${bookValue}" />
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="book" >
|
||||
<p class="inline">
|
||||
<label>Selected Venue:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="bookUri" name="bookUri" value="${bookUriValue}" />
|
||||
</div>
|
||||
|
||||
<#-- Presented At -->
|
||||
<p>
|
||||
<label for="conference">Presented at</label>
|
||||
<input class="acSelector" size="50" type="text" id="conference" name="conference" acGroupName="conference" value="${conferenceValue}" />
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="conference" >
|
||||
<p class="inline">
|
||||
<label>Selected Venue:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="conferenceUri" name="conferenceUri" value="${conferenceUriValue}" />
|
||||
</div>
|
||||
|
||||
<#-- Proceedings of -->
|
||||
<p>
|
||||
<label for="event">Proceedings of</label>
|
||||
<input class="acSelector" size="50" type="text" id="event" name="event" acGroupName="event" value="${eventValue}" />
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="event" >
|
||||
<p class="inline">
|
||||
<label>Selected Organization:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="eventUri" name="eventUri" value="${eventUriValue}" />
|
||||
</div>
|
||||
|
||||
<#-- Editor -->
|
||||
<p>
|
||||
<label for="editor">Editor</label>
|
||||
<input class="acSelector" size="50" type="text" id="editor" name="editor" acGroupName="editor" value="${editorValue}" />
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="editor" >
|
||||
<p class="inline">
|
||||
<label>Selected Editor:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="editorUri" name="editorUri" value="${editorUriValue}" />
|
||||
</div>
|
||||
|
||||
<#-- Publisher -->
|
||||
<p>
|
||||
<label for="publisher">Publisher</label>
|
||||
<input class="acSelector" size="50" type="text" id="publisher" name="publisher" acGroupName="publisher" value="${publisherValue}" />
|
||||
</p>
|
||||
|
||||
<div class="acSelection" acGroupName="publisher" >
|
||||
<p class="inline">
|
||||
<label>Selected Publisher:</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="publisherUri" name="publisherUri" value="${publisherUriValue}" />
|
||||
</div>
|
||||
|
||||
<#-- Place of Publication -->
|
||||
<p>
|
||||
<label for="locale">Place of Publication</label>
|
||||
<input size="30" type="text" id="locale" name="locale" acGroupName="locale" value="${localeValue}" />
|
||||
</p>
|
||||
|
||||
<#-- Volume, Number and Issue -->
|
||||
<p class="inline">
|
||||
<label for="volume" id="volLabel">Volume</label>
|
||||
<label for="number" id="nbrLabel" class="vniLabels">Number</label>
|
||||
<label for="issue" id="issueLabel" class="vniLabels">Issue</label>
|
||||
</p>
|
||||
<p>
|
||||
<input size="4" type="text" id="volume" name="volume" value="${volumeValue}" />
|
||||
<input size="4" class="vniInputs" type="text" id="number" name="number" value="${numberValue}" />
|
||||
<input size="4" class="vniInputs" type="text" id="issue" name="issue" value="${issueValue}" />
|
||||
</p>
|
||||
|
||||
<#-- Start/End Pages -->
|
||||
<p class="inline">
|
||||
<label for="startPage" id="sPLabel">Start Page</label>
|
||||
<label for="endPage" class="sepLabels">End Page</label>
|
||||
</p>
|
||||
<p>
|
||||
<input size="4" type="text" id="startPage" name="startPage" value="${startPageValue}" />
|
||||
<input size="4" class="sepInputs" type="text" id="endPage" name="endPage" value="${endPageValue}" />
|
||||
</p>
|
||||
|
||||
<#-- Publication Date -->
|
||||
<p>
|
||||
<#assign htmlForElements = editConfiguration.pageData.htmlForElements />
|
||||
<#if htmlForElements?keys?seq_contains("dateTime")>
|
||||
<label class="dateTime" for="pubDate">Publication Date</label><p></p>
|
||||
${htmlForElements["dateTime"]} ${yearHint}
|
||||
</#if>
|
||||
</p>
|
||||
</div> <!-- end fieldsForNewPub -->
|
||||
|
||||
</div> <!-- end fullViewOnly -->
|
||||
<p class="submit">
|
||||
<input type="hidden" name = "editKey" value="${editKey}"/>
|
||||
<input type="submit" id="submit" value="${submitButtonText}"/><span class="or"> or </span><a class="cancel" href="${cancelUrl}">Cancel</a>
|
||||
|
@ -105,11 +257,19 @@
|
|||
sparqlForAcFilter: '${sparqlForAcFilter}',
|
||||
sparqlQueryUrl: '${sparqlQueryUrl}',
|
||||
acUrl: '${urls.base}/autocomplete?tokenize=true',
|
||||
acTypes: {collection: 'http://purl.org/ontology/bibo/Periodical', book: 'http://purl.org/ontology/bibo/Book', conference: 'http://purl.org/NET/c4dm/event.owl#Event', event: 'http://purl.org/NET/c4dm/event.owl#Event', editor: 'http://xmlns.com/foaf/0.1/Person', publisher: 'http://xmlns.com/foaf/0.1/Organization'},
|
||||
editMode: '${editMode}',
|
||||
defaultTypeName: 'publication', // used in repair mode to generate button text
|
||||
multipleTypeNames: {collection: 'publication', book: 'book', conference: 'conference', event: 'event', editor: 'editor', publisher: 'publisher'},
|
||||
baseHref: '${urls.base}/individual?uri='
|
||||
};
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
publicationToPersonUtils.onLoad();
|
||||
});
|
||||
</script>
|
||||
</section>
|
||||
</#if>
|
||||
|
||||
|
@ -121,4 +281,5 @@ ${stylesheets.add('<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/sm
|
|||
${scripts.add('<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/js/customFormUtils.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/js/browserUtils.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/templates/freemarker/edit/forms/js/publicationToPersonUtils.js"></script>',
|
||||
'<script type="text/javascript" src="${urls.base}/templates/freemarker/edit/forms/js/customFormWithAutocomplete.js"></script>')}
|
||||
|
|
|
@ -34,3 +34,17 @@ form.customForm h4 {
|
|||
span.readOnly {
|
||||
color: #000;
|
||||
}
|
||||
/* special styles for addPublicationToPerson.ftl
|
||||
volume, number, issue fields and start/end page fields */
|
||||
label.vniLabels {
|
||||
padding-left: 50px;
|
||||
}
|
||||
input.vniInputs {
|
||||
margin-left: 57px;
|
||||
}
|
||||
label.sepLabels {
|
||||
padding-left: 31px;
|
||||
}
|
||||
input.sepInputs {
|
||||
margin-left: 57px;
|
||||
}
|
||||
|
|
|
@ -209,10 +209,9 @@ var customForm = {
|
|||
|
||||
// If an autocomplete selection has been made, undo it.
|
||||
// NEED TO LINK THE TYPE SELECTOR TO THE ACSELECTOR IT'S ASSOCIATED WITH
|
||||
// BECAUSE THERE COULD BE MORE THAN ON AC FIELD. ASSOCIATION IS MADE BY
|
||||
// SHARING THE SAME ID -- "typeSelector" -- AMONG THE SELECT AND THE INPUT
|
||||
// AND THE AC SELECTION DIV
|
||||
// DO WE NEED AN IF STATEMENT AROUND THIS ****
|
||||
// BECAUSE THERE COULD BE MORE THAN ONE AC FIELD. ASSOCIATION IS MADE VIA
|
||||
// THE SPECIAL "acGroupName" ATTRIBUTE WHICH IS SHARED AMONG THE SELECT AND
|
||||
// THE INPUT AND THE AC SELECTION DIV.
|
||||
customForm.undoAutocompleteSelection($(this));
|
||||
|
||||
// Reinitialize view. If no type selection in a two-step form, go back to type view;
|
||||
|
@ -246,7 +245,6 @@ var customForm = {
|
|||
},
|
||||
|
||||
initAutocomplete: function(selectedObj) {
|
||||
|
||||
this.getAcFilter();
|
||||
//If specific individuals are to be filtered out, add them here
|
||||
//to the filtering list
|
||||
|
@ -387,6 +385,9 @@ var customForm = {
|
|||
|
||||
var $acDiv = this.acSelections[$(selectedObj).attr('acGroupName')];
|
||||
|
||||
// provides a way to monitor selection in other js files, e.g. to hide fields upon selection
|
||||
$acDiv.addClass("userSelected");
|
||||
|
||||
// If the form has a type selector, add type name to label in add mode. In edit mode, use typeSelectorSpan
|
||||
// html. The second case is an "else if" and not an else because the template may not be passing the label
|
||||
// to the acSelection macro or it may not be using the macro at all and the label is hard-coded in the html.
|
||||
|
@ -403,7 +404,6 @@ var customForm = {
|
|||
$acDiv.find("a.verifyMatch").attr('href', this.baseHref + uri);
|
||||
|
||||
$changeLink = $acDiv.find('a.changeSelection');
|
||||
$changeLink.unbind('click');
|
||||
$changeLink.click(function() {
|
||||
customForm.undoAutocompleteSelection($acDiv);
|
||||
});
|
||||
|
@ -430,7 +430,6 @@ var customForm = {
|
|||
else {
|
||||
$acSelectionObj = $(selectedObj);
|
||||
}
|
||||
if ( !$acSelectionObj.is(':hidden') ) {
|
||||
var $acSelector = null;
|
||||
$.each(this.acSelectors, function() {
|
||||
if ( $(this).attr('acGroupName') == $acSelectionObj.attr('acGroupName') ) {
|
||||
|
@ -439,6 +438,7 @@ var customForm = {
|
|||
});
|
||||
$acSelector.parent("p").show();
|
||||
this.hideFields($acSelectionObj);
|
||||
$acSelectionObj.removeClass('userSelected');
|
||||
$acSelectionObj.find("input.acUriReceiver").val('');
|
||||
$acSelectionObj.find("span").text('');
|
||||
$acSelectionObj.find("a.verifyMatch").attr('href', this.baseHref);
|
||||
|
@ -449,7 +449,6 @@ var customForm = {
|
|||
if ( this.acSelectOnly ) {
|
||||
this.disableSubmit();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Set type uri for autocomplete, and type name for labels and button text.
|
||||
|
@ -496,12 +495,15 @@ var customForm = {
|
|||
// If this.acType is empty, we are either in a one-step form with no type yet selected,
|
||||
// or in repair mode in a two-step form with no type selected. Use the default type
|
||||
// name specified in the form data.
|
||||
if ( selectedObj && this.hasMultipleTypeNames ) {
|
||||
var name = customForm.multipleTypeNames[$(selectedObj).attr('id')];
|
||||
return this.capitalize(name);
|
||||
if ( !selectedObj || !this.hasMultipleTypeNames ) {
|
||||
return this.acTypes ? this.typeName : this.capitalize(this.defaultTypeName);
|
||||
}
|
||||
else if ( selectedObj && ( $(selectedObj).attr('acGroupName') == this.typeSelector.attr('acGroupName') ) ) {
|
||||
return this.acTypes ? this.typeName : this.capitalize(this.defaultTypeName);
|
||||
}
|
||||
else {
|
||||
return this.acTypes ? this.typeName : this.capitalize(this.defaultTypeName);
|
||||
var name = customForm.multipleTypeNames[$(selectedObj).attr('id')];
|
||||
return this.capitalize(name);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -0,0 +1,139 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
|
||||
var publicationToPersonUtils = {
|
||||
|
||||
onLoad: function(mode) {
|
||||
this.initObjectReferences();
|
||||
this.bindEventListeners();
|
||||
|
||||
this.autoDateLabel.hide();
|
||||
},
|
||||
|
||||
initObjectReferences: function() {
|
||||
|
||||
this.form = $('#addpublicationToPerson');
|
||||
this.collection = $('#collection');
|
||||
this.book = $('#book');
|
||||
this.presentedAt = $('#conference');
|
||||
this.proceedingsOf = $('#event');
|
||||
this.editor = $('#editor');
|
||||
this.editorUri = $('#editorUri');
|
||||
this.publisher = $('#publisher');
|
||||
this.locale = $('#locale');
|
||||
this.volume = $('#volume');
|
||||
this.volLabel = $('#volLabel');
|
||||
this.number = $('#number');
|
||||
this.nbrLabel = $('#nbrLabel');
|
||||
this.issue = $('#issue');
|
||||
this.issueLabel = $('#issueLabel');
|
||||
this.startPage = $('#startPage');
|
||||
this.sPLabel = $('#sPLabel');
|
||||
this.endPage = $('#endPage');
|
||||
this.ePLabel = $('#ePLabel');
|
||||
this.typeSelector = $('#typeSelector');
|
||||
this.autoDateLabel = null;
|
||||
|
||||
this.form.find('label').each(function() {
|
||||
if ( $(this).attr('for') == "dateTime-year") {
|
||||
publicationToPersonUtils.autoDateLabel = $(this);
|
||||
}
|
||||
});
|
||||
|
||||
this.pubTitle = $('input#title');
|
||||
this.pubAcSelection = $('div#pubAcSelection');
|
||||
this.fieldsForNewPub = $('#fieldsForNewPub');
|
||||
this.changeLink = this.pubAcSelection.children('p').children('#changeSelection');
|
||||
},
|
||||
|
||||
bindEventListeners: function() {
|
||||
this.idCache = {};
|
||||
|
||||
this.typeSelector.change(function() {
|
||||
publicationToPersonUtils.showFieldsForPub();
|
||||
publicationToPersonUtils.displayFieldsForType();
|
||||
});
|
||||
|
||||
// we need the delay in the next two functions to ensure the correct timing after the user
|
||||
// selects the ac item. The .change handles a mouse click; .blur an arrow key and tab selection
|
||||
this.pubTitle.change( function(objEvent) {
|
||||
window.setTimeout('publicationToPersonUtils.hideFieldsForPub()', 180);
|
||||
});
|
||||
|
||||
this.pubTitle.blur( function(objEvent) {
|
||||
window.setTimeout('publicationToPersonUtils.hideFieldsForPub()', 180);
|
||||
});
|
||||
|
||||
this.changeLink.click( function() {
|
||||
publicationToPersonUtils.showFieldsForPub();
|
||||
});
|
||||
},
|
||||
|
||||
hideFieldsForPub: function() {
|
||||
if ( this.pubAcSelection.attr('class').indexOf('userSelected') != -1 ) {
|
||||
this.fieldsForNewPub.slideUp(250);
|
||||
}
|
||||
},
|
||||
|
||||
showFieldsForPub: function() {
|
||||
this.fieldsForNewPub.show();
|
||||
},
|
||||
|
||||
displayFieldsForType: function() {
|
||||
// hide everything, then show what's needed based on type
|
||||
// simpler in the event the user changes the type
|
||||
this.collection.parent('p').hide();
|
||||
this.book.parent('p').hide();
|
||||
this.presentedAt.parent('p').hide();
|
||||
this.proceedingsOf.parent('p').hide();
|
||||
this.editor.parent('p').hide();
|
||||
this.publisher.parent('p').hide();
|
||||
this.locale.parent('p').hide();
|
||||
this.volume.hide();
|
||||
this.volLabel.hide();
|
||||
this.number.hide();
|
||||
this.nbrLabel.hide();
|
||||
this.issue.hide();
|
||||
this.issueLabel.hide();
|
||||
this.startPage.parent('p').hide();
|
||||
this.sPLabel.parent('p').hide();
|
||||
|
||||
var selectedType = this.typeSelector.find(':selected').text();
|
||||
if ( selectedType == 'Academic Article' || selectedType == 'Article' || selectedType == 'Editorial Article' || selectedType == 'Review') {
|
||||
this.collection.parent('p').show();
|
||||
this.volume.show();
|
||||
this.volLabel.show();
|
||||
this.number.show();
|
||||
this.nbrLabel.show();
|
||||
this.issue.show();
|
||||
this.issueLabel.show();
|
||||
this.startPage.parent('p').show();
|
||||
this.sPLabel.parent('p').show();
|
||||
}
|
||||
else if ( selectedType == 'Chapter' ) {
|
||||
this.book.parent('p').show();
|
||||
this.editor.parent('p').show();
|
||||
this.publisher.parent('p').show();
|
||||
this.locale.parent('p').show();
|
||||
this.volume.show();
|
||||
this.volLabel.show();
|
||||
}
|
||||
else if ( selectedType == 'Book' || selectedType == 'Edited Book' ) {
|
||||
this.editor.parent('p').show();
|
||||
this.publisher.parent('p').show();
|
||||
this.locale.parent('p').show();
|
||||
this.volume.show();
|
||||
this.volLabel.show();
|
||||
}
|
||||
else if ( selectedType == 'Conference Paper' ) {
|
||||
// this.collection.parent('p').show();
|
||||
this.presentedAt.parent('p').show();
|
||||
// this.startPage.parent('p').show();
|
||||
// this.sPLabel.parent('p').show();
|
||||
}
|
||||
else if ( selectedType == 'Conference Poster' || selectedType == 'Speech') {
|
||||
this.presentedAt.parent('p').show();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -110,17 +110,15 @@
|
|||
<label for="description">Description</label>
|
||||
<input size="50" type="text" id="description" name="description" value="${descriptionValue}" />
|
||||
</p>
|
||||
|
||||
<#assign htmlForElements = editConfiguration.pageData.htmlForElements />
|
||||
<p>
|
||||
<label for="yearAwarded" id="yearAwarded">Year Awarded</label>
|
||||
<input size="4" type="text" id="yearAwarded" name="yearAwarded" value="${yearAwardedValue}" /> ${yearHint}
|
||||
<label for="yearAwardedDisplay" id="yearAwarded">Year Awarded</label>
|
||||
<input size="4" type="text" id="yearAwardedDisplay" name="yearAwardedDisplay" value="" /> ${yearHint}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<h4>Years Inclusive <span class="hint"> (e.g., for multi-year awards)</span></h4>
|
||||
</p>
|
||||
<#--Need to draw edit elements for dates here-->
|
||||
<#assign htmlForElements = editConfiguration.pageData.htmlForElements />
|
||||
<#if htmlForElements?keys?seq_contains("startField")>
|
||||
<label class="dateTime" for="startField">Start</label>
|
||||
${htmlForElements["startField"]} ${yearHint}
|
||||
|
@ -142,6 +140,13 @@
|
|||
|
||||
<p id="requiredLegend" class="requiredHint">* required fields</p>
|
||||
|
||||
<#-- hide the html that gets written, and use java script to pass the value between the two -->
|
||||
<div class="hidden">
|
||||
<#if htmlForElements?keys?seq_contains("yearAwarded")>
|
||||
${htmlForElements["yearAwarded"]}
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</section>
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
<p class="inline">
|
||||
<label>${labelValue}</label>
|
||||
<span class="acSelectionInfo"></span>
|
||||
<a href="${urlsBase}/individual?uri=" class="verifyMatch" title="verify match">(Verify this match)</a>
|
||||
<a href="${urlsBase}/individual?uri=" class="verifyMatch" title="verify match">(Verify this match</a> or
|
||||
<a href="#" class="changeSelection" id="changeSelection">change selection)</a>
|
||||
</p>
|
||||
<input class="acUriReceiver" type="hidden" id="${inputId}" name="${inputName}" value="${inputValue}" />
|
||||
<!-- Field value populated by JavaScript -->
|
||||
|
|
|
@ -2,47 +2,284 @@
|
|||
|
||||
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import com.hp.hpl.jena.vocabulary.RDFS;
|
||||
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.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.FieldVTwo;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
||||
|
||||
public class AddPresenterRoleToPersonGenerator extends AddRoleToPersonTwoStageGenerator {
|
||||
public class AddPresenterRoleToPersonGenerator extends VivoBaseGenerator implements
|
||||
EditConfigurationGenerator {
|
||||
|
||||
private static String template = "addPresenterRoleToPerson.ftl";
|
||||
final static String presentationClass = vivoCore + "Presentation";
|
||||
final static String roleClass = vivoCore + "PresenterRole";
|
||||
final static String conferenceClass = bibo + "Conference";
|
||||
final static String hasRolePred = vivoCore + "hasPresenterRole";
|
||||
final static String roleOfPred = vivoCore + "presenterRoleOf";
|
||||
final static String roleRealizedInPred = vivoCore + "roleRealizedIn";
|
||||
final static String realizedRolePred = vivoCore + "realizedRole";
|
||||
final static String includesEventPred = vivoCore + "includesEvent";
|
||||
final static String eventWithinPred = vivoCore + "eventWithin";
|
||||
final static String roleToInterval = vivoCore + "dateTimeInterval";
|
||||
final static String intervalType = vivoCore + "DateTimeInterval";
|
||||
final static String intervalToStart = vivoCore + "start";
|
||||
final static String intervalToEnd = vivoCore + "end";
|
||||
final static String dateTimeValueType = vivoCore + "DateTimeValue";
|
||||
final static String dateTimeValue = vivoCore + "dateTime";
|
||||
final static String dateTimePrecision = vivoCore + "dateTimePrecision";
|
||||
|
||||
public AddPresenterRoleToPersonGenerator() {}
|
||||
|
||||
@Override
|
||||
String getTemplate() {
|
||||
return template;
|
||||
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq,
|
||||
HttpSession session) {
|
||||
|
||||
EditConfigurationVTwo conf = new EditConfigurationVTwo();
|
||||
|
||||
initBasics(conf, vreq);
|
||||
initPropertyParameters(vreq, session, conf);
|
||||
initObjectPropForm(conf, vreq);
|
||||
|
||||
conf.setTemplate("addPresenterRoleToPerson.ftl");
|
||||
|
||||
conf.setVarNameForSubject("person");
|
||||
conf.setVarNameForPredicate("predicate");
|
||||
conf.setVarNameForObject("role");
|
||||
|
||||
conf.setN3Required( Arrays.asList( n3ForNewRole,
|
||||
roleLabelAssertion,
|
||||
presTypeAssertion,
|
||||
presLabelAssertion ) );
|
||||
conf.setN3Optional( Arrays.asList( n3ForConference, n3ForConfLabel, n3ForStart, n3ForEnd ) );
|
||||
|
||||
conf.addNewResource("presentation", DEFAULT_NS_FOR_NEW_RESOURCE);
|
||||
conf.addNewResource("conference", DEFAULT_NS_FOR_NEW_RESOURCE);
|
||||
conf.addNewResource("role", DEFAULT_NS_FOR_NEW_RESOURCE);
|
||||
conf.addNewResource("intervalNode", DEFAULT_NS_FOR_NEW_RESOURCE);
|
||||
conf.addNewResource("startNode", DEFAULT_NS_FOR_NEW_RESOURCE);
|
||||
conf.addNewResource("endNode", DEFAULT_NS_FOR_NEW_RESOURCE);
|
||||
|
||||
//uris in scope: none
|
||||
//literals in scope: none
|
||||
|
||||
conf.setUrisOnform(Arrays.asList("presentation", "conference", "role", "presentationType"));
|
||||
conf.setLiteralsOnForm(Arrays.asList("presentationLabel", "conferenceLabel", "roleLabel"));
|
||||
|
||||
conf.addSparqlForExistingLiteral("presentationLabel", presentationLabelQuery);
|
||||
conf.addSparqlForExistingLiteral("conferenceLabel", conferenceLabelQuery);
|
||||
conf.addSparqlForExistingLiteral("roleLabel", roleLabelQuery);
|
||||
conf.addSparqlForExistingUris("presentation", presentationQuery);
|
||||
conf.addSparqlForExistingUris("conference", conferenceQuery);
|
||||
conf.addSparqlForExistingUris("presentationType", presentationTypeQuery);
|
||||
conf.addSparqlForExistingLiteral(
|
||||
"startField-value", existingStartDateQuery);
|
||||
conf.addSparqlForExistingLiteral(
|
||||
"endField-value", existingEndDateQuery);
|
||||
conf.addSparqlForExistingUris(
|
||||
"intervalNode", existingIntervalNodeQuery);
|
||||
conf.addSparqlForExistingUris("startNode", existingStartNodeQuery);
|
||||
conf.addSparqlForExistingUris("endNode", existingEndNodeQuery);
|
||||
conf.addSparqlForExistingUris("startField-precision",
|
||||
existingStartPrecisionQuery);
|
||||
conf.addSparqlForExistingUris("endField-precision",
|
||||
existingEndPrecisionQuery);
|
||||
|
||||
conf.addField( new FieldVTwo().
|
||||
setName("presentation").
|
||||
setOptionsType(FieldVTwo.OptionsType.INDIVIDUALS_VIA_VCLASS).
|
||||
setObjectClassUri(presentationClass)
|
||||
);
|
||||
|
||||
conf.addField( new FieldVTwo().
|
||||
setName("presentationLabel")
|
||||
.setRangeDatatypeUri( XSD.xstring.toString() ).
|
||||
setValidators( list("nonempty") )
|
||||
);
|
||||
|
||||
conf.addField( new FieldVTwo().
|
||||
setName("presentationType").
|
||||
setOptionsType(FieldVTwo.OptionsType.CHILD_VCLASSES_WITH_PARENT).
|
||||
setObjectClassUri(presentationClass).
|
||||
setValidators( list("nonempty") )
|
||||
);
|
||||
|
||||
conf.addField( new FieldVTwo().
|
||||
setName("roleLabel")
|
||||
.setRangeDatatypeUri( XSD.xstring.toString() ).
|
||||
setValidators( list("nonempty") )
|
||||
);
|
||||
|
||||
conf.addField( new FieldVTwo().
|
||||
setName("conference").
|
||||
setOptionsType(FieldVTwo.OptionsType.INDIVIDUALS_VIA_VCLASS).
|
||||
setObjectClassUri(conferenceClass)
|
||||
);
|
||||
|
||||
conf.addField( new FieldVTwo().
|
||||
setName("conferenceLabel").
|
||||
setRangeDatatypeUri(XSD.xstring.toString() )
|
||||
);
|
||||
|
||||
conf.addField( new FieldVTwo().setName("startField").
|
||||
setEditElement(
|
||||
new DateTimeWithPrecisionVTwo(null,
|
||||
VitroVocabulary.Precision.YEAR.uri(),
|
||||
VitroVocabulary.Precision.NONE.uri())
|
||||
)
|
||||
);
|
||||
|
||||
conf.addField( new FieldVTwo().setName("endField").
|
||||
setEditElement(
|
||||
new DateTimeWithPrecisionVTwo(null,
|
||||
VitroVocabulary.Precision.YEAR.uri(),
|
||||
VitroVocabulary.Precision.NONE.uri())
|
||||
)
|
||||
);
|
||||
|
||||
conf.addValidator(new DateTimeIntervalValidationVTwo("startField","endField"));
|
||||
conf.addValidator(new AntiXssValidation());
|
||||
|
||||
prepare(vreq, conf);
|
||||
return conf;
|
||||
}
|
||||
|
||||
/* N3 assertions */
|
||||
final static String n3ForNewRole =
|
||||
"@prefix core: <" + vivoCore + "> . \n\n" +
|
||||
"?person <" + hasRolePred + "> ?role . \n" +
|
||||
"?role a <" + roleClass + "> . \n" +
|
||||
"?role <" + roleOfPred + "> ?person . \n" +
|
||||
"?role <" + roleRealizedInPred + "> ?presentation . \n" +
|
||||
"?presentation <" + realizedRolePred + "> ?role .";
|
||||
|
||||
@Override
|
||||
String getRoleType() {
|
||||
return "http://vivoweb.org/ontology/core#PresenterRole";
|
||||
}
|
||||
final static String roleLabelAssertion =
|
||||
"?role <" + label + "> ?roleLabel .";
|
||||
|
||||
@Override
|
||||
RoleActivityOptionTypes getRoleActivityTypeOptionsType() {
|
||||
return RoleActivityOptionTypes.HARDCODED_LITERALS;
|
||||
}
|
||||
final static String presLabelAssertion =
|
||||
"?presentation <" + label + "> ?presentationLabel .";
|
||||
|
||||
final static String presTypeAssertion =
|
||||
"?presentation a ?presentationType .";
|
||||
|
||||
@Override
|
||||
String getRoleActivityTypeObjectClassUri(VitroRequest vreq) {
|
||||
return null;
|
||||
}
|
||||
final static String n3ForConference =
|
||||
"?conference a <" + conferenceClass + "> . \n" +
|
||||
"?conference <" + includesEventPred + "> ?presentation . \n" +
|
||||
"?presentation <" + eventWithinPred + "> ?conference . ";
|
||||
|
||||
final static String n3ForConfLabel =
|
||||
"?conference <" + label + "> ?conferenceLabel .";
|
||||
|
||||
//Presenter role involves hard-coded options for the "right side" of the role or activity
|
||||
@Override
|
||||
protected HashMap<String, String> getRoleActivityTypeLiteralOptions() {
|
||||
HashMap<String, String> literalOptions = new HashMap<String, String>();
|
||||
literalOptions.put("", "Select type");
|
||||
literalOptions.put("http://vivoweb.org/ontology/core#Presentation", "Presentation");
|
||||
literalOptions.put("http://vivoweb.org/ontology/core#InvitedTalk","Invited Talk");
|
||||
return literalOptions;
|
||||
}
|
||||
final static String n3ForStart =
|
||||
"?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
"?intervalNode a <" + intervalType + "> . \n" +
|
||||
"?intervalNode <" + intervalToStart + "> ?startNode . \n" +
|
||||
"?startNode a <" + dateTimeValueType + "> . \n" +
|
||||
"?startNode <" + dateTimeValue + "> ?startField-value . \n" +
|
||||
"?startNode <" + dateTimePrecision + "> ?startField-precision . \n";
|
||||
|
||||
final static String n3ForEnd =
|
||||
"?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
"?intervalNode a <" + intervalType + "> . \n" +
|
||||
"?intervalNode <" + intervalToEnd + "> ?endNode . \n" +
|
||||
"?endNode a <" + dateTimeValueType + "> . \n" +
|
||||
"?endNode <" + dateTimeValue + "> ?endField-value . \n" +
|
||||
"?endNode <" + dateTimePrecision + "> ?endField-precision . \n";
|
||||
|
||||
/* Queries for editing an existing entry */
|
||||
final static String roleLabelQuery =
|
||||
"SELECT ?existingRoleLabel WHERE { \n" +
|
||||
"?role <" + label + "> ?existingRoleLabel . }";
|
||||
|
||||
final static String presentationQuery =
|
||||
"SELECT ?existingPresentation WHERE { \n" +
|
||||
"?role <" + roleRealizedInPred + "> ?existingPresentation . }";
|
||||
|
||||
final static String presentationLabelQuery =
|
||||
"SELECT ?existingPresentationLabel WHERE { \n" +
|
||||
"?role <" + roleRealizedInPred + "> ?existingPresentation . " +
|
||||
"?existingPresentation <" + label + "> ?existingPresentationLabel . }";
|
||||
|
||||
final static String presentationTypeQuery =
|
||||
"PREFIX vitro: <" + VitroVocabulary.vitroURI + "> \n" +
|
||||
"SELECT ?existingPresentationType WHERE { \n" +
|
||||
"?role <" + roleRealizedInPred + "> ?existingPresentation . " +
|
||||
"?existingPresentation vitro:mostSpecificType ?existingPresentationType . }";
|
||||
|
||||
final static String conferenceQuery =
|
||||
"SELECT ?existingConference WHERE { \n" +
|
||||
"?role <" + roleRealizedInPred + "> ?existingPresentation . " +
|
||||
"?existingPresentation <" + eventWithinPred + "> ?existingConference . }";
|
||||
|
||||
final static String conferenceLabelQuery =
|
||||
"SELECT ?existingConferenceLabel WHERE { \n" +
|
||||
"?role <" + roleRealizedInPred + "> ?existingPresentation . " +
|
||||
"?existingPresentation <" + eventWithinPred + "> ?existingConference . \n" +
|
||||
"?existingConference <" + label + "> ?existingConferenceLabel . }";
|
||||
|
||||
final static String existingStartDateQuery =
|
||||
"SELECT ?existingDateStart WHERE { \n" +
|
||||
" ?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
" ?intervalNode a <" + intervalType + "> . \n" +
|
||||
" ?intervalNode <" + intervalToStart + "> ?startNode . \n" +
|
||||
" ?startNode a <" + dateTimeValueType +"> . \n" +
|
||||
" ?startNode <" + dateTimeValue + "> ?existingDateStart . }";
|
||||
|
||||
final static String existingEndDateQuery =
|
||||
"SELECT ?existingEndDate WHERE { \n" +
|
||||
" ?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
" ?intervalNode a <" + intervalType + "> . \n " +
|
||||
" ?intervalNode <" + intervalToEnd + "> ?endNode . \n" +
|
||||
" ?endNode a <" + dateTimeValueType + "> . \n" +
|
||||
" ?endNode <" + dateTimeValue + "> ?existingEndDate . }";
|
||||
|
||||
final static String existingIntervalNodeQuery =
|
||||
"SELECT ?existingIntervalNode WHERE { \n" +
|
||||
" ?role <" + roleToInterval + "> ?existingIntervalNode . \n" +
|
||||
" ?existingIntervalNode a <" + intervalType + "> . }";
|
||||
|
||||
final static String existingStartNodeQuery =
|
||||
"SELECT ?existingStartNode WHERE { \n" +
|
||||
" ?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
" ?intervalNode a <" + intervalType + "> . \n" +
|
||||
" ?intervalNode <" + intervalToStart + "> ?existingStartNode . \n" +
|
||||
" ?existingStartNode a <" + dateTimeValueType + "> . } ";
|
||||
|
||||
final static String existingEndNodeQuery =
|
||||
"SELECT ?existingEndNode WHERE { \n" +
|
||||
" ?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
" ?intervalNode a <" + intervalType + "> . \n" +
|
||||
" ?intervalNode <" + intervalToEnd + "> ?existingEndNode . \n" +
|
||||
" ?existingEndNode a <" + dateTimeValueType + "> .} ";
|
||||
|
||||
final static String existingStartPrecisionQuery =
|
||||
"SELECT ?existingStartPrecision WHERE { \n" +
|
||||
" ?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
" ?intervalNode a <" + intervalType + "> . \n" +
|
||||
" ?intervalNode <" + intervalToStart + "> ?startNode . \n" +
|
||||
" ?startNode a <" + dateTimeValueType + "> . \n" +
|
||||
" ?startNode <" + dateTimePrecision + "> ?existingStartPrecision . }";
|
||||
|
||||
final static String existingEndPrecisionQuery =
|
||||
"SELECT ?existingEndPrecision WHERE { \n" +
|
||||
" ?role <" + roleToInterval + "> ?intervalNode . \n" +
|
||||
" ?intervalNode a <" + intervalType + "> . \n" +
|
||||
" ?intervalNode <" + intervalToEnd + "> ?endNode . \n" +
|
||||
" ?endNode a <" + dateTimeValueType + "> . \n" +
|
||||
" ?endNode <" + dateTimePrecision + "> ?existingEndPrecision . }";
|
||||
|
||||
@Override
|
||||
boolean isShowRoleLabelField(){return true;}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ import com.hp.hpl.jena.rdf.model.Literal;
|
|||
import com.hp.hpl.jena.vocabulary.XSD;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
|
||||
|
@ -21,7 +22,11 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUti
|
|||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeIntervalValidationVTwo;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo;
|
||||
|
||||
/**
|
||||
* On an add/new, this will show a form, on an edit/update this will skip to the
|
||||
|
@ -29,6 +34,25 @@ import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
|||
*/
|
||||
public class AddPublicationToPersonGenerator extends VivoBaseGenerator implements EditConfigurationGenerator {
|
||||
|
||||
final static String collectionClass = bibo + "Periodical";
|
||||
final static String bookClass = bibo + "Document";
|
||||
final static String conferenceClass = bibo + "Conference";
|
||||
final static String editorClass = foaf + "Person";
|
||||
final static String publisherClass = vivoCore + "Publisher";
|
||||
final static String presentedAtPred = bibo + "presentedAt";
|
||||
final static String localePred = vivoCore + "placeOfPublication";
|
||||
final static String volumePred = bibo + "volume";
|
||||
final static String numberPred = bibo + "number";
|
||||
final static String issuePred = bibo + "issue";
|
||||
final static String startPagePred = bibo + "pageStart";
|
||||
final static String endPagePred = bibo + "pageEnd";
|
||||
final static String dateTimePred = vivoCore + "dateTimeValue";
|
||||
final static String dateTimeValueType = vivoCore + "DateTimeValue";
|
||||
final static String dateTimeValue = vivoCore + "dateTime";
|
||||
final static String dateTimePrecision = vivoCore + "dateTimePrecision";
|
||||
|
||||
public AddPublicationToPersonGenerator() {}
|
||||
|
||||
@Override
|
||||
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
|
||||
|
||||
|
@ -89,6 +113,7 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
editConfiguration.setTemplate("addPublicationToPerson.ftl");
|
||||
// adding person has publication validator
|
||||
editConfiguration.addValidator(new PersonHasPublicationValidator());
|
||||
editConfiguration.addValidator(new AntiXssValidation());
|
||||
|
||||
// Adding additional data, specifically edit mode
|
||||
addFormSpecificData(editConfiguration, vreq);
|
||||
|
@ -113,14 +138,32 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***N3 strings both required and optional***/
|
||||
private List<String> generateN3Optional() {
|
||||
return list(getN3ForExistingPub(),
|
||||
getN3ForNewPub(),
|
||||
getN3NewPubNameAssertion(),
|
||||
getN3NewPubTypeAssertion());
|
||||
getN3NewPubTypeAssertion(),
|
||||
getN3ForCollection(),
|
||||
getN3CollectionNameAssertion(),
|
||||
getN3ForBook(),
|
||||
getN3BookNameAssertion(),
|
||||
getN3ForConference(),
|
||||
getN3ConferenceNameAssertion(),
|
||||
getN3ForEvent(),
|
||||
getN3EventNameAssertion(),
|
||||
getN3ForEditor(),
|
||||
getN3EditorNameAssertion(),
|
||||
getN3ForPublisher(),
|
||||
getN3PublisherNameAssertion(),
|
||||
getN3ForLocaleAssertion(),
|
||||
getN3ForVolumeAssertion(),
|
||||
getN3ForNumberAssertion(),
|
||||
getN3ForIssueAssertion(),
|
||||
getN3ForStartPageAssertion(),
|
||||
getN3ForEndPageAssertion(),
|
||||
getN3ForDateTimeAssertion()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
@ -158,6 +201,110 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
|
||||
}
|
||||
|
||||
private String getN3ForCollection() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri vivo:hasPublicationVenue ?collectionUri . \n" +
|
||||
"?collectionUri a <" + collectionClass + "> . \n" +
|
||||
"?collectionUri vivo:publicationVenueFor ?pubUri . ";
|
||||
}
|
||||
|
||||
private String getN3CollectionNameAssertion() {
|
||||
return "?collectionUri <" + label + "> ?collection .";
|
||||
}
|
||||
|
||||
private String getN3ForBook() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri vivo:hasPublicationVenue ?bookUri . \n" +
|
||||
"?bookUri a <" + bookClass + "> . \n" +
|
||||
"?bookUri vivo:publicationVenueFor ?pubUri . ";
|
||||
}
|
||||
|
||||
private String getN3BookNameAssertion() {
|
||||
return "?bookUri <" + label + "> ?book .";
|
||||
}
|
||||
|
||||
private String getN3ForConference() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + presentedAtPred + "> ?conferenceUri . \n" +
|
||||
"?conferenceUri a <" + conferenceClass + "> . \n" +
|
||||
"?conferenceUri vivo:includesEvent ?pubUri . ";
|
||||
}
|
||||
|
||||
private String getN3ConferenceNameAssertion() {
|
||||
return "?conferenceUri <" + label + "> ?conference .";
|
||||
}
|
||||
|
||||
private String getN3ForEvent() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri vivo:proceedingsOf ?eventUri . \n" +
|
||||
"?eventUri a <" + conferenceClass + "> . \n" +
|
||||
"?eventUri vivo:hasProceedings ?pubUri . ";
|
||||
}
|
||||
|
||||
private String getN3EventNameAssertion() {
|
||||
return "?eventUri <" + label + "> ?event .";
|
||||
}
|
||||
|
||||
private String getN3ForEditor() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri vivo:editor ?editorUri . \n" +
|
||||
"?editorUri a <" + editorClass + "> . \n" +
|
||||
"?editorUri vivo:editorOf ?pubUri . ";
|
||||
}
|
||||
|
||||
private String getN3EditorNameAssertion() {
|
||||
return "?editorUri <" + label + "> ?editor .";
|
||||
}
|
||||
|
||||
private String getN3ForPublisher() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri vivo:publisher ?publisherUri . \n" +
|
||||
"?publisherUri a <" + publisherClass + "> . \n" +
|
||||
"?publisherUri vivo:publisherOf ?pubUri . ";
|
||||
}
|
||||
|
||||
private String getN3PublisherNameAssertion() {
|
||||
return "?publisherUri <" + label + "> ?publisher .";
|
||||
}
|
||||
|
||||
private String getN3ForLocaleAssertion() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + localePred + "> ?locale . ";
|
||||
}
|
||||
|
||||
private String getN3ForVolumeAssertion() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + volumePred + "> ?volume . ";
|
||||
}
|
||||
|
||||
private String getN3ForNumberAssertion() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + numberPred + "> ?number . ";
|
||||
}
|
||||
|
||||
private String getN3ForIssueAssertion() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + issuePred + "> ?issue . ";
|
||||
}
|
||||
|
||||
private String getN3ForStartPageAssertion() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + startPagePred + "> ?startPage . ";
|
||||
}
|
||||
|
||||
private String getN3ForEndPageAssertion() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + endPagePred + ">?endPage . ";
|
||||
}
|
||||
|
||||
private String getN3ForDateTimeAssertion() {
|
||||
return "@prefix vivo: <" + vivoCore + "> . \n" +
|
||||
"?pubUri <" + dateTimePred + "> ?dateTimeNode . \n" +
|
||||
"?dateTimeNode a <" + dateTimeValueType + "> . \n" +
|
||||
"?dateTimeNode <" + dateTimeValue + "> ?dateTime-value . \n" +
|
||||
"?dateTimeNode <" + dateTimePrecision + "> ?dateTime-precision . ";
|
||||
}
|
||||
|
||||
/** Get new resources */
|
||||
private Map<String, String> generateNewResources(VitroRequest vreq) {
|
||||
String DEFAULT_NS_TOKEN=null; //null forces the default NS
|
||||
|
@ -165,6 +312,13 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
HashMap<String, String> newResources = new HashMap<String, String>();
|
||||
newResources.put("authorshipUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("pubUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("collectionUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("bookUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("conferenceUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("eventUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("editorUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("publisherUri", DEFAULT_NS_TOKEN);
|
||||
newResources.put("dateTimeNode", DEFAULT_NS_TOKEN);
|
||||
return newResources;
|
||||
}
|
||||
|
||||
|
@ -186,11 +340,23 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
//add role activity and roleActivityType to uris on form
|
||||
urisOnForm.add("pubUri");
|
||||
urisOnForm.add("pubType");
|
||||
urisOnForm.add("collectionUri");
|
||||
urisOnForm.add("bookUri");
|
||||
urisOnForm.add("conferenceUri");
|
||||
urisOnForm.add("eventUri");
|
||||
urisOnForm.add("editorUri");
|
||||
urisOnForm.add("publisherUri");
|
||||
editConfiguration.setUrisOnform(urisOnForm);
|
||||
|
||||
//activity label and role label are literals on form
|
||||
List<String> literalsOnForm = new ArrayList<String>();
|
||||
literalsOnForm.add("title");
|
||||
literalsOnForm.add("locale");
|
||||
literalsOnForm.add("volume");
|
||||
literalsOnForm.add("number");
|
||||
literalsOnForm.add("issue");
|
||||
literalsOnForm.add("startPage");
|
||||
literalsOnForm.add("endPage");
|
||||
editConfiguration.setLiteralsOnForm(literalsOnForm);
|
||||
}
|
||||
|
||||
|
@ -212,6 +378,25 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
setTitleField(editConfiguration);
|
||||
setPubTypeField(editConfiguration);
|
||||
setPubUriField(editConfiguration);
|
||||
setCollectionLabelField(editConfiguration);
|
||||
setCollectionUriField(editConfiguration);
|
||||
setBookLabelField(editConfiguration);
|
||||
setBookUriField(editConfiguration);
|
||||
setConferenceLabelField(editConfiguration);
|
||||
setConferenceUriField(editConfiguration);
|
||||
setEventLabelField(editConfiguration);
|
||||
setEventUriField(editConfiguration);
|
||||
setEditorLabelField(editConfiguration);
|
||||
setEditorUriField(editConfiguration);
|
||||
setPublisherLabelField(editConfiguration);
|
||||
setPublisherUriField(editConfiguration);
|
||||
setLocaleField(editConfiguration);
|
||||
setVolumeField(editConfiguration);
|
||||
setNumberField(editConfiguration);
|
||||
setIssueField(editConfiguration);
|
||||
setStartPageField(editConfiguration);
|
||||
setEndPageField(editConfiguration);
|
||||
setDateTimeField(editConfiguration);
|
||||
}
|
||||
|
||||
private void setTitleField(EditConfigurationVTwo editConfiguration) {
|
||||
|
@ -220,13 +405,8 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
setName("title").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void setPubTypeField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("pubType").
|
||||
|
@ -234,16 +414,154 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
setLiteralOptions(getPublicationTypeLiteralOptions()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void setPubUriField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("pubUri").
|
||||
setObjectClassUri(personClass));
|
||||
}
|
||||
|
||||
private void setCollectionLabelField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("collection").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setCollectionUriField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("collectionUri").
|
||||
setObjectClassUri(collectionClass));
|
||||
}
|
||||
|
||||
private void setBookLabelField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("book").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setBookUriField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("bookUri").
|
||||
setObjectClassUri(bookClass));
|
||||
}
|
||||
|
||||
private void setConferenceLabelField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("conference").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setConferenceUriField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("conferenceUri").
|
||||
setObjectClassUri(conferenceClass));
|
||||
}
|
||||
|
||||
private void setEventLabelField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("event").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setEventUriField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("eventUri").
|
||||
setObjectClassUri(conferenceClass));
|
||||
}
|
||||
|
||||
private void setEditorLabelField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("editor").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setEditorUriField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("editorUri").
|
||||
setObjectClassUri(editorClass));
|
||||
}
|
||||
|
||||
private void setPublisherLabelField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("publisher").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setPublisherUriField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("publisherUri").
|
||||
setObjectClassUri(publisherClass));
|
||||
}
|
||||
|
||||
private void setLocaleField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("locale").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setVolumeField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("volume").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setNumberField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("number").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setIssueField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("issue").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setStartPageField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("startPage").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setEndPageField(EditConfigurationVTwo editConfiguration) {
|
||||
String stringDatatypeUri = XSD.xstring.toString();
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("endPage").
|
||||
setValidators(list("datatype:" + stringDatatypeUri)).
|
||||
setRangeDatatypeUri(stringDatatypeUri));
|
||||
}
|
||||
|
||||
private void setDateTimeField(EditConfigurationVTwo editConfiguration) {
|
||||
editConfiguration.addField(new FieldVTwo().
|
||||
setName("dateTime").
|
||||
setEditElement(
|
||||
new DateTimeWithPrecisionVTwo(null,
|
||||
VitroVocabulary.Precision.YEAR.uri(),
|
||||
VitroVocabulary.Precision.NONE.uri())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private List<List<String>> getPublicationTypeLiteralOptions() {
|
||||
List<List<String>> literalOptions = new ArrayList<List<String>>();
|
||||
|
@ -278,8 +596,6 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
|
|||
return literalOptions;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Form specific data
|
||||
public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
|
||||
HashMap<String, Object> formSpecificData = new HashMap<String, Object>();
|
||||
|
|
|
@ -200,9 +200,9 @@ public class PersonHasAwardOrHonorGenerator extends VivoBaseGenerator implements
|
|||
"?awardReceipt <"+ descriptionPred +"> ?description .";
|
||||
|
||||
final static String n3ForOrgAssertion =
|
||||
"?award <" + awardConferredByPred +"> ?org . \n" +
|
||||
"?awardReceipt <" + awardConferredByPred +"> ?org . \n" +
|
||||
"?org a <" + orgClass + "> . \n" +
|
||||
"?org <" + awardConferredPred + "> ?award .";
|
||||
"?org <" + awardConferredPred + "> ?awardReceipt .";
|
||||
|
||||
final static String orgLabelAssertion =
|
||||
"?org <"+ label + "> ?orgLabel .";
|
||||
|
@ -238,8 +238,8 @@ public class PersonHasAwardOrHonorGenerator extends VivoBaseGenerator implements
|
|||
|
||||
final static String orgQuery =
|
||||
"SELECT ?existingOrg WHERE { \n" +
|
||||
" ?award <" + awardConferredByPred + "> ?existingOrg . \n" +
|
||||
"}";
|
||||
" ?awardReceipt <" + awardConferredByPred + "> ?existingOrg . \n" +
|
||||
" ?existingOrg <" + awardConferredPred + "> ?awardReceipt . }";
|
||||
|
||||
final static String awardReceiptLabelQuery =
|
||||
"SELECT ?existingAwardReceiptLabel WHERE { \n" +
|
||||
|
|
|
@ -16,6 +16,7 @@ public abstract class VivoBaseGenerator extends BaseEditConfigurationGenerator i
|
|||
final static String foaf = "http://xmlns.com/foaf/0.1/";
|
||||
final static String type =VitroVocabulary.RDF_TYPE ;
|
||||
final static String label =rdfs+"label" ;
|
||||
final static String bibo = "http://purl.org/ontology/bibo/";
|
||||
|
||||
final static String trainingClass = vivoCore+"EducationalTraining" ;
|
||||
final static String degreeClass =vivoCore+"AcademicDegree" ;
|
||||
|
|
Loading…
Add table
Reference in a new issue