Adding ability for an EditConfiguration to specify a redirect instead of a form. NIHVIVO-3369

This commit is contained in:
briancaruso 2011-12-01 19:14:13 +00:00
parent 32041213b4
commit 78049c4633
2 changed files with 263 additions and 225 deletions

View file

@ -3602,7 +3602,6 @@
<vitro:collateBySubclassAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</vitro:collateBySubclassAnnot>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:fullPropertyNameAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#string">has authorship</vitro:fullPropertyNameAnnot>
<vitro:skipEditForm rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</vitro:skipEditForm>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:publicDescriptionAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#string">This relates a person to their authorship information.</vitro:publicDescriptionAnnot>
</rdf:Description>

View file

@ -12,7 +12,10 @@ import javax.servlet.http.HttpSession;
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.beans.ObjectPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.PersonHasPublicationValidator;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
@ -20,10 +23,41 @@ 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.generators.EditModeUtils;
/**
* On an add/new, this will show a form, on an edit/update this will skip to the
* profile page of the publication.
*/
public class AddPublicationToPersonGenerator extends VivoBaseGenerator implements EditConfigurationGenerator {
@Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq,
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
if( EditConfigurationUtils.getObjectUri(vreq) == null ){
return doAddNew(vreq,session);
}else{
return doSkipToPublication(vreq);
}
}
private EditConfigurationVTwo doSkipToPublication(VitroRequest vreq) {
Individual authorshipNode = EditConfigurationUtils.getObjectIndividual(vreq);
//try to get the publication
List<ObjectPropertyStatement> stmts =
authorshipNode.getObjectPropertyStatements("http://vivoweb.org/ontology/core#linkedInformationResource");
if( stmts == null || stmts.isEmpty() ){
return doBadAuthorshipNoPub( vreq );
}else if( stmts.size() > 1 ){
return doBadAuthorshipMultiplePubs(vreq);
}else{
//skip to publication
EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
editConfiguration.setSkipToUrl(UrlBuilder.getIndividualProfileUrl(stmts.get(0).getObjectURI(), vreq));
return editConfiguration;
}
}
protected EditConfigurationVTwo doAddNew(VitroRequest vreq,
HttpSession session) {
EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
initBasics(editConfiguration, vreq);
@ -31,7 +65,6 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
initObjectPropForm(editConfiguration, vreq);
setVarNames(editConfiguration);
// Required N3
editConfiguration.setN3Required(generateN3Required());
@ -62,9 +95,15 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
return editConfiguration;
}
private EditConfigurationVTwo doBadAuthorshipMultiplePubs(VitroRequest vreq) {
// TODO Auto-generated method stub
return null;
}
private EditConfigurationVTwo doBadAuthorshipNoPub(VitroRequest vreq) {
// TODO Auto-generated method stub
return null;
}
private void setVarNames(EditConfigurationVTwo editConfiguration) {
editConfiguration.setVarNameForSubject("person");