diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/NewIndividualFormGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/NewIndividualFormGenerator.java
new file mode 100644
index 000000000..9e65c1764
--- /dev/null
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/NewIndividualFormGenerator.java
@@ -0,0 +1,337 @@
+/* $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.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils;
+
+
+import com.hp.hpl.jena.rdf.model.Literal;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.vocabulary.RDFS;
+import com.hp.hpl.jena.vocabulary.XSD;
+import com.hp.hpl.jena.ontology.OntModel;
+import edu.cornell.mannlib.vitro.webapp.beans.DataProperty;
+import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
+import edu.cornell.mannlib.vitro.webapp.beans.Individual;
+import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty;
+import edu.cornell.mannlib.vitro.webapp.beans.VClass;
+import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
+import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
+import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
+import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary;
+import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
+import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.Field;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.processEdit.RdfLiteralHash;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditN3GeneratorVTwo;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.SelectListGeneratorVTwo;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo;
+import edu.cornell.mannlib.vitro.webapp.web.MiscWebUtils;
+import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch;
+
+/**
+ * Generates the edit configuration for a default property form.
+ *
+ */
+public class NewIndividualFormGenerator implements EditConfigurationGenerator {
+
+ private Log log = LogFactory.getLog(NewIndividualFormGenerator.class);
+ private boolean isObjectPropForm = false;
+ private String subjectUri = null;
+ private String predicateUri = null;
+ private String objectUri = null;
+ private String datapropKeyStr= null;
+ private int dataHash = 0;
+ private DataPropertyStatement dps = null;
+ private String dataLiteral = null;
+ private String template = "newIndividualForm.ftl";
+ private static HashMap defaultsForXSDtypes ;
+ static {
+ defaultsForXSDtypes = new HashMap();
+ //defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","2001-01-01T12:00:00");
+ defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","#Unparseable datetime defaults to now");
+ }
+ @Override
+ public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
+ EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
+ //Set n3 generator
+ editConfiguration.setN3Generator(new EditN3GeneratorVTwo(editConfiguration));
+
+ //process subject, predicate, object parameters
+ this.initProcessParameters(vreq, session, editConfiguration);
+
+ //Assumes this is a simple case of subject predicate var
+ editConfiguration.setN3Required(this.generateN3Required(vreq));
+
+ //n3 optional
+ editConfiguration.setN3Optional(this.generateN3Optional());
+
+ //Todo: what do new resources depend on here?
+ //In original form, these variables start off empty
+ editConfiguration.setNewResources(this.generateNewResources(vreq));
+ //In scope
+ this.setUrisAndLiteralsInScope(editConfiguration);
+
+ //on Form
+ this.setUrisAndLiteralsOnForm(editConfiguration, vreq);
+
+ editConfiguration.setFilesOnForm(new ArrayList());
+
+ //Sparql queries
+ this.setSparqlQueries(editConfiguration);
+
+ //set fields
+ setFields(editConfiguration, vreq, EditConfigurationUtils.getPredicateUri(vreq));
+
+ // No need to put in session here b/c put in session within edit request dispatch controller instead
+ //placing in session depends on having edit key which is handled in edit request dispatch controller
+ // editConfiguration.putConfigInSession(editConfiguration, session);
+
+ prepareForUpdate(vreq, session, editConfiguration);
+
+
+ //Form title and submit label now moved to edit configuration template
+ //TODO: check if edit configuration template correct place to set those or whether
+ //additional methods here should be used and reference instead, e.g. edit configuration template could call
+ //default obj property form.populateTemplate or some such method
+ //Select from existing also set within template itself
+ setTemplate(editConfiguration, vreq);
+ //Set edit key
+ setEditKey(editConfiguration, vreq);
+ addFormSpecificData(editConfiguration, vreq);
+
+ return editConfiguration;
+
+
+ }
+
+ private Map generateNewResources(VitroRequest vreq) {
+ HashMap newResources = new HashMap();
+ //TODO: Get default namespace
+ String defaultNamespace = vreq.getWebappDaoFactory().getDefaultNamespace();
+ newResources.put("newInd", defaultNamespace + "individual");
+ return newResources;
+ }
+
+ private void setEditKey(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
+ String editKey = EditConfigurationUtils.getEditKey(vreq);
+ editConfiguration.setEditKey(editKey);
+ }
+
+ private void setTemplate(EditConfigurationVTwo editConfiguration,
+ VitroRequest vreq) {
+ editConfiguration.setTemplate(template);
+
+ }
+
+ //Initialize setup: process parameters
+ private void initProcessParameters(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
+ String formUrl = EditConfigurationUtils.getFormUrl(vreq);
+
+ subjectUri = EditConfigurationUtils.getSubjectUri(vreq);
+ predicateUri = EditConfigurationUtils.getPredicateUri(vreq);
+
+ editConfiguration.setFormUrl(formUrl);
+
+ editConfiguration.setUrlPatternToReturnTo("/individual");
+
+ editConfiguration.setVarNameForSubject("subjectNotUsed");
+ editConfiguration.setSubjectUri(subjectUri);
+ editConfiguration.setEntityToReturnTo("?newInd");
+ editConfiguration.setVarNameForPredicate("predicateNotUsed");
+ editConfiguration.setPredicateUri(predicateUri);
+
+ //not concerned about remainder, can move into default obj prop form if required
+ this.isObjectPropForm = true;
+ this.initObjectParameters(vreq);
+ this.processObjectPropForm(vreq, editConfiguration);
+ }
+
+
+ private void initObjectParameters(VitroRequest vreq) {
+ //in case of object property
+ objectUri = EditConfigurationUtils.getObjectUri(vreq);
+ }
+
+ private void processObjectPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
+ editConfiguration.setVarNameForObject("objectNotUsed");
+ editConfiguration.setObject(objectUri);
+ //this needs to be set for the editing to be triggered properly, otherwise the 'prepare' method
+ //pretends this is a data property editing statement and throws an error
+ //TODO: Check if null in case no object uri exists but this is still an object property
+ if(objectUri != null) {
+ editConfiguration.setObjectResource(true);
+ }
+ }
+
+ private void processDataPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
+ editConfiguration.setObjectResource(false);
+ //set data prop value, data prop key str,
+ editConfiguration.setDatapropKey((datapropKeyStr==null)?"":datapropKeyStr);
+ editConfiguration.setVarNameForObject(dataLiteral);
+ //original set datapropValue, which in this case would be empty string but no way here
+ editConfiguration.setDatapropValue("");
+ editConfiguration.setUrlPatternToReturnTo("/entity");
+ }
+
+ //Get N3 required
+ //Handles both object and data property
+ private List generateN3Required(VitroRequest vreq) {
+ List n3ForEdit = new ArrayList();
+ String editString = "?newInd <" + VitroVocabulary.RDF_TYPE + "> <" + getTypeOfNew(vreq) + "> .";
+ n3ForEdit.add(editString);
+ return n3ForEdit;
+ }
+
+ private List generateN3Optional() {
+ List n3Optional = new ArrayList();
+ String editString = "?newInd <" + RDFS.label.getURI() + "> ?label .";
+ n3Optional.add(editString);
+ return n3Optional;
+
+ }
+
+ //Set queries
+ private String retrieveQueryForInverse () {
+ String queryForInverse = "PREFIX owl: "
+ + " SELECT ?inverse_property "
+ + " WHERE { ?inverse_property owl:inverseOf ?predicate } ";
+ return queryForInverse;
+ }
+
+ private void setUrisAndLiteralsInScope(EditConfigurationVTwo editConfiguration) {
+ HashMap> urisInScope = new HashMap>();
+ //note that at this point the subject, predicate, and object var parameters have already been processed
+ urisInScope.put(editConfiguration.getVarNameForSubject(),
+ Arrays.asList(new String[]{editConfiguration.getSubjectUri()}));
+ urisInScope.put(editConfiguration.getVarNameForPredicate(),
+ Arrays.asList(new String[]{editConfiguration.getPredicateUri()}));
+ editConfiguration.setUrisInScope(urisInScope);
+ //Uris in scope include subject, predicate, and object var
+
+ editConfiguration.setLiteralsInScope(new HashMap>());
+ }
+
+ //n3 should look as follows
+ //?subject ?predicate ?objectVar
+
+ private void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
+ List urisOnForm = new ArrayList();
+ List literalsOnForm = new ArrayList();
+ literalsOnForm.add("label");
+ literalsOnForm.add("firstName");
+ literalsOnForm.add("lastName");
+ editConfiguration.setUrisOnform(urisOnForm);
+ editConfiguration.setLiteralsOnForm(literalsOnForm);
+ }
+
+ private String getDataLiteral(VitroRequest vreq) {
+ DataProperty prop = EditConfigurationUtils.getDataProperty(vreq);
+ return prop.getLocalName() + "Edited";
+ }
+
+ //This is for various items
+ private void setSparqlQueries(EditConfigurationVTwo editConfiguration) {
+ //Sparql queries defining retrieval of literals etc.
+ editConfiguration.setSparqlForAdditionalLiteralsInScope(new HashMap());
+
+ Map urisInScope = new HashMap();
+ editConfiguration.setSparqlForAdditionalUrisInScope(urisInScope);
+
+ editConfiguration.setSparqlForExistingLiterals(generateSparqlForExistingLiterals());
+ editConfiguration.setSparqlForExistingUris(generateSparqlForExistingUris());
+ }
+
+
+ //Get page uri for object
+ private HashMap generateSparqlForExistingUris() {
+ HashMap map = new HashMap();
+ return map;
+ }
+
+ private HashMap generateSparqlForExistingLiterals() {
+ HashMap map = new HashMap();
+ return map;
+ }
+
+
+ private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) {
+ Map fields = new HashMap();
+ getLabelField(editConfiguration, vreq, fields);
+
+ }
+
+ private void getLabelField(EditConfigurationVTwo editConfiguration,
+ VitroRequest vreq, Map fields) {
+ FieldVTwo field = new FieldVTwo();
+ field.setName("label");
+ field.setNewResource(false);
+ //queryForExisting is not being used anywhere in Field
+ String stringDatatypeUri = XSD.xstring.toString();
+
+
+ List validators = new ArrayList();
+ validators.add("nonempty");
+ field.setValidators(validators);
+
+ //subjectUri and subjectClassUri are not being used in Field
+
+ field.setOptionsType("UNDEFINED");
+ //why isn't predicate uri set for data properties?
+ field.setPredicateUri(null);
+ field.setObjectClassUri(null);
+ field.setRangeDatatypeUri(stringDatatypeUri);
+
+ field.setLiteralOptions(new ArrayList>());
+
+ //set assertions
+ List assertions = new ArrayList();
+ field.setAssertions(assertions);
+ fields.put(field.getName(), field);
+
+ }
+
+
+
+ private void prepareForUpdate(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
+ //Here, retrieve model from
+ Model model = (Model) session.getServletContext().getAttribute("jenaOntModel");
+ //This form is always doing a non-update
+ editConfiguration.prepareForNonUpdate( model );
+
+ }
+
+
+ //Get parameter
+ private String getTypeOfNew(VitroRequest vreq) {
+ return vreq.getParameter("typeOfNew");
+ }
+
+ //Form specific data
+ public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
+ HashMap formSpecificData = new HashMap();
+ formSpecificData.put("typeName", getTypeName(vreq));
+ //Put in the fact that we require field
+ editConfiguration.setFormSpecificData(formSpecificData);
+ }
+
+ private String getTypeName(VitroRequest vreq) {
+ String typeOfNew = getTypeOfNew(vreq);
+ VClass type = vreq.getWebappDaoFactory().getVClassDao().getVClassByURI(typeOfNew);
+ return type.getName();
+ }
+
+
+}
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/ProcessRdfFormController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/ProcessRdfFormController.java
index 318458d4a..b603a9cf2 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/ProcessRdfFormController.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/ProcessRdfFormController.java
@@ -120,8 +120,10 @@ public class ProcessRdfFormController extends FreemarkerHttpServlet{
private void applyEditSubmissionPreprocessors(
EditConfigurationVTwo configuration, MultiValueEditSubmission submission) {
List preprocessors = configuration.getEditSubmissionPreprocessors();
- for(EditSubmissionVTwoPreprocessor p: preprocessors) {
- p.preprocess(submission);
+ if(preprocessors != null) {
+ for(EditSubmissionVTwoPreprocessor p: preprocessors) {
+ p.preprocess(submission);
+ }
}
}
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java
index 6b0b035c3..0c12b1920 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java
@@ -93,18 +93,20 @@ public class EditConfigurationTemplateModel extends BaseTemplateModel {
//Based on certain pre-set fields/variables, look for what
//drop-downs need to be populated
private void populateDropdowns() {
- if(EditConfigurationUtils.isObjectProperty(editConfig.getPredicateUri(), vreq)) {
- setRangeOptions();
- }
- if(pageData.containsKey("objectSelect")) {
- List fieldNames = (List)pageData.get("objectSelect");
- for(String field:fieldNames) {
- WebappDaoFactory wdf = vreq.getWebappDaoFactory();
- Map optionsMap = SelectListGeneratorVTwo.getOptions(editConfig, field , wdf);
- pageData.put(field, optionsMap);
- }
- }
-
+ String predicateUri = editConfig.getPredicateUri();
+ if(predicateUri != null) {
+ if(EditConfigurationUtils.isObjectProperty(editConfig.getPredicateUri(), vreq)) {
+ setRangeOptions();
+ }
+ if(pageData.containsKey("objectSelect")) {
+ List fieldNames = (List)pageData.get("objectSelect");
+ for(String field:fieldNames) {
+ WebappDaoFactory wdf = vreq.getWebappDaoFactory();
+ Map optionsMap = SelectListGeneratorVTwo.getOptions(editConfig, field , wdf);
+ pageData.put(field, optionsMap);
+ }
+ }
+ }
}
//TODO: Check if this should return a list instead
@@ -127,11 +129,13 @@ public class EditConfigurationTemplateModel extends BaseTemplateModel {
}
private void setFormTitle() {
- //if(editConfig.isObjectResource()) {
- if(EditConfigurationUtils.isObjectProperty(editConfig.getPredicateUri(), vreq)) {
- setObjectFormTitle();
- } else {
- setDataFormTitle();
+ String predicateUri = editConfig.getPredicateUri();
+ if(predicateUri != null) {
+ if(EditConfigurationUtils.isObjectProperty(editConfig.getPredicateUri(), vreq)) {
+ setObjectFormTitle();
+ } else {
+ setDataFormTitle();
+ }
}
}
@@ -196,32 +200,36 @@ public class EditConfigurationTemplateModel extends BaseTemplateModel {
private void setSubmitLabel() {
String submitLabel = null;
- if(EditConfigurationUtils.isObjectProperty(editConfig.getPredicateUri(), vreq)) {
- Individual objectIndividual = EditConfigurationUtils.getObjectIndividual(vreq);
- ObjectProperty prop = EditConfigurationUtils.getObjectProperty(vreq);
-
- if(objectIndividual != null) {
- submitLabel = "Save change";
- } else {
- if ( prop.getOfferCreateNewOption() ) {
- submitLabel = "Select existing";
- } else {
- submitLabel = "Save entry";
- }
- }
- } else {
- if(editConfig.isDataPropertyUpdate()) {
- submitLabel = "Save change";
+ String predicateUri = editConfig.getPredicateUri();
+ if(predicateUri != null) {
+ if(EditConfigurationUtils.isObjectProperty(editConfig.getPredicateUri(), vreq)) {
+ Individual objectIndividual = EditConfigurationUtils.getObjectIndividual(vreq);
+ ObjectProperty prop = EditConfigurationUtils.getObjectProperty(vreq);
+
+ if(objectIndividual != null) {
+ submitLabel = "Save change";
+ } else {
+ if ( prop.getOfferCreateNewOption() ) {
+ submitLabel = "Select existing";
+ } else {
+ submitLabel = "Save entry";
+ }
+ }
} else {
- submitLabel = "Save entry";
+ if(editConfig.isDataPropertyUpdate()) {
+ submitLabel = "Save change";
+ } else {
+ submitLabel = "Save entry";
+ }
}
- }
+ }
pageData.put("submitLabel", submitLabel);
+
}
private void setRangeOptions() {
ObjectProperty prop = EditConfigurationUtils.getObjectProperty(vreq);
- if( prop.getSelectFromExisting() ){
+ if( prop != null && prop.getSelectFromExisting() ){
WebappDaoFactory wdf = vreq.getWebappDaoFactory();
//TODO: Change this to varname for object from object property?
String fieldName = editConfig.getVarNameForObject();
@@ -320,11 +328,14 @@ public class EditConfigurationTemplateModel extends BaseTemplateModel {
public Property getPredicateProperty() {
String predicateUri = getPredicateUri();
//If predicate uri corresponds to object property, return that
- if(EditConfigurationUtils.isObjectProperty(predicateUri, vreq)){
- return EditConfigurationUtils.getObjectPropertyForPredicate(this.vreq, predicateUri);
+ if(predicateUri != null) {
+ if(EditConfigurationUtils.isObjectProperty(predicateUri, vreq)){
+ return EditConfigurationUtils.getObjectPropertyForPredicate(this.vreq, predicateUri);
+ }
+ //otherwise return Data property
+ return EditConfigurationUtils.getDataPropertyForPredicate(this.vreq, predicateUri);
}
- //otherwise return Data property
- return EditConfigurationUtils.getDataPropertyForPredicate(this.vreq, predicateUri);
+ return null;
}
public ObjectProperty getObjectPredicateProperty() {
diff --git a/webapp/web/templates/freemarker/edit/forms/addClinicalRoleToPerson.ftl b/webapp/web/templates/freemarker/edit/forms/addClinicalRoleToPerson.ftl
deleted file mode 100644
index 7a815b637..000000000
--- a/webapp/web/templates/freemarker/edit/forms/addClinicalRoleToPerson.ftl
+++ /dev/null
@@ -1,26 +0,0 @@
-<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
-<#--Two stage form for clinical 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. AddClinicalRoleToPersonGenerator.java.
-
-Optional values can be set, but each of these has default values
-set in addRoleToPersonTwoStage.ftl:
-
-buttonText
-typeSelectorLabel
-numDateFields
-showRoleLAbelField
-roleExamples-->
-
-
-<#--Variable assignments for Add Clinical Role To Person-->
-<#assign roleDescriptor = "clinical activity" />
-<#assign typeSelectorLabel = "clinical activity type" />
-
-
-<#--Each of the two stage forms will include the form below-->
-<#include "addRoleToPersonTwoStage.ftl">
\ No newline at end of file
diff --git a/webapp/web/templates/freemarker/edit/forms/addRoleToPersonTwoStage.ftl b/webapp/web/templates/freemarker/edit/forms/addRoleToPersonTwoStage.ftl
deleted file mode 100644
index b0b2cdaeb..000000000
--- a/webapp/web/templates/freemarker/edit/forms/addRoleToPersonTwoStage.ftl
+++ /dev/null
@@ -1,194 +0,0 @@
-<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
-
-<#--Retrieve certain edit configuration information-->
-<#assign editMode = editConfiguration.pageData.editMode />
-<#assign literalValues = editConfiguration.existingLiteralValues />
-<#assign uriValues = editConfiguration.existingUriValues />
-<#assign htmlForElements = editConfiguration.pageData.htmlForElements />
-
-<#--Freemarker variables with default values that can be overridden by specific forms-->
-
-
-<#--buttonText, typeSelectorLabel, numDateFields, showRoleLabelField, roleExamples-->
-<#if !buttonText?has_content>
- <#assign buttonText = roleDescriptor />
-#if>
-<#if !typeSelectorLabel?has_content>
- <#assign typeSelectorLabel = roleDescriptor />
-#if>
-<#if !numDateFields?has_content>
- <#assign numDateFields = 2 />
-#if>
-<#if !showRoleLabelField?has_content>
- <#assign showRoleLabelField = true />
-#if>
-<#if !roleExamples?has_content>
- <#assign roleExamples = "" />
-#if>
-
-<#--Setting values for titleVerb, submitButonText, and disabled Value-->
-<#if editConfiguration.objectUri?has_content>
- <#assign titleVerb = "Edit"/>
- <#assign submitButtonText>Edit ${buttonText}#assign>
- <#if editMode = "repair">
- <#assign disabledVal = ""/>
- <#else>
- <#assign disabledVal = "disabled"/>
- #if>
-<#else>
- <#assign titleVerb = "Create"/>
- <#assign submitButtonText>${buttonText}#assign>
- <#assign disabledVal = ""/>
- <#assign editMode = "add" />
-#if>
-
-<#--Get existing value for specific data literals and uris-->
-
-
-<#--Get selected activity type value if it exists, this is alternative to below-->
-<#assign activityTypeValue = ""/>
-<#if uriValues?keys?seq_contains("roleActivityType") && (uriValues.roleActivityType?size > 0)>
- <#assign activityTypeValue = uriValues.roleActivityType[0] />
-#if>
-
- <#--Get activity label value-->
-<#assign activityLabelValue = "" />
-<#if literalValues?keys?seq_contains("activityLabel") && (literalValues.activityLabel?size > 0)>
- <#assign activityLabelValue = literalValues.activityLabel[0] />
-#if>
-
-<#--Get role label-->
-<#assign roleLabel = "" />
-<#if literalValues?keys?seq_contains("roleLabel") && (literalValues.roleLabel?size > 0) >
- <#assign roleLabel = literalValues.roleLabel[0] />
-#if>
-
-
-
-
${titleVerb} ${roleDescriptor} entry for ${editConfiguration.subjectName}
-
-<#--Display error messages if any-->
-<#if errorNameFieldIsEmpty??>
- <#assign errorMessage = "Enter a name for the ." />
-#if>
-
-<#if errorRoleFieldIsEmpty??>
- <#assign errorMessage = "Specify a role for this ." />
-#if>
-
-<#if errorMessage?has_content>
-
-
-
${errorMessage}
-
-#if>
-
-
-
-
-
-
-
* required fields
-
-
-<#--Specifying form-specific script and adding stylesheets and scripts-->
-
-
-
-${stylesheets.add('')}
-${stylesheets.add('')}
-${stylesheets.add('')}
-
-${scripts.add('')}
-${scripts.add('')}
-${scripts.add('')}
-
-
-
\ No newline at end of file
diff --git a/webapp/web/templates/freemarker/edit/forms/newIndividualForm.ftl b/webapp/web/templates/freemarker/edit/forms/newIndividualForm.ftl
index 62fb6254a..fc1b6746c 100644
--- a/webapp/web/templates/freemarker/edit/forms/newIndividualForm.ftl
+++ b/webapp/web/templates/freemarker/edit/forms/newIndividualForm.ftl
@@ -2,8 +2,10 @@
<#-- Template for adding a new individual from the Site Admin page: VIVO version -->
+<#--Retrieve certain edit configuration information-->
+<#assign typeName = editConfiguration.pageData.typeName />
-