NIHVIVO-647 Continued work on publication form
This commit is contained in:
parent
602a62053e
commit
de1ee320f5
6 changed files with 97 additions and 25 deletions
|
@ -24,7 +24,6 @@ core:authorInAuthorship (Person : Authorship) - inverse of linkedAuthor
|
|||
<%@ page import="java.util.ArrayList" %>
|
||||
<%@ page import="java.util.Arrays" %>
|
||||
<%@ page import="java.util.Collections" %>
|
||||
<%@ page import="java.net.URLEncoder" %>
|
||||
|
||||
<%@ page import="com.hp.hpl.jena.rdf.model.Model" %>
|
||||
<%@ page import="com.hp.hpl.jena.vocabulary.XSD" %>
|
||||
|
@ -42,6 +41,7 @@ core:authorInAuthorship (Person : Authorship) - inverse of linkedAuthor
|
|||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.JavaScript" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Css" %>
|
||||
|
||||
<%@ page import="org.json.JSONObject" %>
|
||||
<%@ page import="org.apache.commons.logging.Log" %>
|
||||
<%@ page import="org.apache.commons.logging.LogFactory" %>
|
||||
|
||||
|
@ -397,7 +397,7 @@ SPARQL queries for existing values. --%>
|
|||
|
||||
<div id="selectedAuthor" class="acSelection">
|
||||
<%-- RY maybe make this a label and input field. See what looks best. --%>
|
||||
<p class="inline"><label>Selected author: </label><span class="acSelectionName" id="selectedAuthorName"></span></p>
|
||||
<p class="inline"><label>Selected author: </label><span class="acSelectionInfo" id="selectedAuthorName"></span></p>
|
||||
<input type="hidden" id="personUri" name="personUri" value="" /> <!-- Field value populated by JavaScript -->
|
||||
</div>
|
||||
|
||||
|
|
|
@ -19,22 +19,17 @@ core:informationResourceInAuthorship (InformationResource : Authorship) - invers
|
|||
<%@ page import="java.util.List" %>
|
||||
<%@ page import="java.util.ArrayList" %>
|
||||
<%@ page import="java.util.Arrays" %>
|
||||
<%@ page import="java.util.Collections" %>
|
||||
<%@ page import="java.net.URLEncoder" %>
|
||||
|
||||
<%@ page import="com.hp.hpl.jena.rdf.model.Model" %>
|
||||
<%@ page import="com.hp.hpl.jena.vocabulary.XSD" %>
|
||||
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.Individual" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataPropertyComparator" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.EditConfiguration" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.PublicationHasAuthorValidator" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.PersonHasPublicationValidator" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.VitroRequest" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.web.MiscWebUtils" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.utils.StringUtils" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.JavaScript" %>
|
||||
<%@ page import="edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Css" %>
|
||||
|
||||
|
@ -180,6 +175,8 @@ SPARQL queries for existing values. --%>
|
|||
EditConfiguration.putConfigInSession(editConfig,session);
|
||||
}
|
||||
|
||||
editConfig.addValidator(new PersonHasPublicationValidator());
|
||||
|
||||
Model model = (Model) application.getAttribute("jenaOntModel");
|
||||
String objectUri = (String) request.getAttribute("objectUri");
|
||||
editConfig.prepareForNonUpdate(model); // we're only adding new, not editing existing
|
||||
|
@ -203,20 +200,25 @@ SPARQL queries for existing values. --%>
|
|||
request.setAttribute("customCss", customCss);
|
||||
%>
|
||||
|
||||
<c:set var="requiredHint" value="<span class='requiredHint'> *</span>" />
|
||||
|
||||
<jsp:include page="${preForm}" />
|
||||
|
||||
<h2>Create a new publication entry for <%= subjectName %></h2>
|
||||
|
||||
<form id="addPublicationForm" action="<c:url value="/edit/processRdfForm2.jsp"/>" >
|
||||
|
||||
<p class="inline"><v:input type="select" label="Publication Type" name="pubType" id="typeSelector" /></p>
|
||||
<div id="infoForJs">
|
||||
<span class="acUrl" id="<c:url value="/autocomplete?stem=true" />"></span>
|
||||
</div>
|
||||
<p class="inline"><v:input type="select" label="Publication Type ${requiredHint}" name="pubType" id="typeSelector" /></p>
|
||||
|
||||
<div id="fullViewOnly">
|
||||
<v:input type="text" id="label" name="title" label="Title" cssClass="acSelector" size="50" />
|
||||
|
||||
<div class="acSelection">
|
||||
<%-- RY maybe make this a label and input field. See what looks best. --%>
|
||||
<p class="inline"><label>Selected :</label><span class="acSelectionName"></span></p>
|
||||
<p class="inline"><label></label><span class="acSelectionInfo"></span></p>
|
||||
<input type="hidden" id="pubUri" name="pubUri" class="acReceiver" value="" /> <!-- Field value populated by JavaScript -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
display: none;
|
||||
}
|
||||
|
||||
.acSelectionName {
|
||||
.acSelectionInfo {
|
||||
background-color: #d9d9d9;
|
||||
padding: .5em 1em;
|
||||
}
|
|
@ -9,6 +9,11 @@
|
|||
display: none;
|
||||
}
|
||||
|
||||
/* Always hidden, JS or no JS */
|
||||
#infoForJs {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#content form p.inline label {
|
||||
display: inline;
|
||||
clear: none;
|
||||
|
|
|
@ -226,7 +226,7 @@ var addAuthorForm = {
|
|||
this.hideFields(this.firstNameWrapper);
|
||||
this.hideFields(this.middleNameWrapper);
|
||||
|
||||
// Cancel restores form to initial state
|
||||
// Cancel restores initial form view
|
||||
this.cancel.unbind('click');
|
||||
this.cancel.bind('click', function() {
|
||||
addAuthorForm.initFormView();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
var customFormWATS = {
|
||||
var customForm = {
|
||||
|
||||
/* *** Initial page setup *** */
|
||||
|
||||
|
@ -32,7 +32,6 @@ var customFormWATS = {
|
|||
this.acSelector = this.form.find('.acSelector');
|
||||
this.acSelection = this.form.find('.acSelection');
|
||||
|
||||
|
||||
},
|
||||
|
||||
// Set up the form on page load
|
||||
|
@ -40,15 +39,16 @@ var customFormWATS = {
|
|||
|
||||
this.initFormTypeView();
|
||||
this.bindEventListeners();
|
||||
this.initAutocomplete();
|
||||
//this.initAutocomplete();
|
||||
|
||||
},
|
||||
|
||||
initFormTypeView: function() {
|
||||
|
||||
this.hideFields(this.fullViewOnly);
|
||||
this.button.hide();
|
||||
this.or.hide();
|
||||
this.requiredLegend.hide();
|
||||
this.or.hide();
|
||||
|
||||
this.cancel.unbind('click');
|
||||
|
||||
|
@ -62,8 +62,10 @@ var customFormWATS = {
|
|||
this.button.show();
|
||||
this.button.val('Create Publication');
|
||||
|
||||
this.cancel.unbind('click');
|
||||
this.cancel.click(function() {
|
||||
customFormWATS.initFormTypeView();
|
||||
customForm.initFormTypeView();
|
||||
return false;
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -82,24 +84,87 @@ var customFormWATS = {
|
|||
labelField = $('#label');
|
||||
labelFieldLabel = $('label[for=' + labelField.attr('id') + ']');
|
||||
labelText = labelFieldLabel.html();
|
||||
selectedText = $(this).find(':selected').html();
|
||||
labelFieldLabel.html(selectedText + ' ' + labelText);
|
||||
labelFieldLabel.html(customForm.getSelectedTypeName() + ' ' + labelText);
|
||||
|
||||
customFormWATS.initFormFullView();
|
||||
customForm.initFormFullView();
|
||||
|
||||
// set ac type
|
||||
}
|
||||
// do we need else case? i.e. if user has set back to "select one", we should undo
|
||||
// above settings?
|
||||
});
|
||||
},
|
||||
|
||||
initAutocomplete: function() {
|
||||
// Make cache a property of this so we can access it after removing
|
||||
// an author.
|
||||
this.acCache = {};
|
||||
this.baseAcUrl = $('.acUrl').attr('id');
|
||||
|
||||
// ac selection: disable typeSelector and acSelector
|
||||
this.acSelector.autocomplete({
|
||||
minLength: 3,
|
||||
source: function(request, response) {
|
||||
if (request.term in customForm.acCache) {
|
||||
// console.log('found term in cache');
|
||||
response(customForm.acCache[request.term]);
|
||||
return;
|
||||
}
|
||||
// console.log('not getting term from cache');
|
||||
|
||||
// If the url query params are too long, we could do a post
|
||||
// here instead of a get. Add the exclude uris to the data
|
||||
// rather than to the url.
|
||||
$.ajax({
|
||||
url: customForm.acUrl,
|
||||
dataType: 'json',
|
||||
data: request,
|
||||
complete: function(xhr) {
|
||||
// Not sure why, but we need an explicit json parse here. jQuery
|
||||
// should parse the response text and return an json object.
|
||||
var results = jQuery.parseJSON(xhr.responseText);
|
||||
customForm.acCache[request.term] = results;
|
||||
response(results);
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
select: function(event, ui) {
|
||||
customForm.showAutocompleteSelection(ui);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
showAutocompleteSelection: function(ui) {
|
||||
|
||||
this.acSelector.hide();
|
||||
this.acSelector.attr('disabled', 'disabled');
|
||||
|
||||
this.acSelection.find('label').html('Selected ' + this.getSelectedTypeName() + ':');
|
||||
this.acSelection.show();
|
||||
|
||||
this.acReceiver.val(ui.item.uri);
|
||||
this.acSelectionInfo.html(ui.item.label);
|
||||
|
||||
this.button.val('Add Publication');
|
||||
|
||||
this.cancel.unbind('click');
|
||||
this.cancel.click(function() {
|
||||
// TODO Check out cancel action for authors form. Need to undo/empty some of the stuff above.
|
||||
// do we do it in the initfullview method, or here?
|
||||
customForm.initFormFullView();
|
||||
return false;
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
getSelectedTypeName: function() {
|
||||
return this.typeSelector.find(':selected').html();
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
customFormWATS.onLoad();
|
||||
customForm.onLoad();
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue