updates for page management
This commit is contained in:
parent
9047ce5a9c
commit
5472c77cee
3 changed files with 162 additions and 0 deletions
31
productMods/js/menupage/processDataGetterUtils.js
Normal file
31
productMods/js/menupage/processDataGetterUtils.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
//This class is responsible for the product-specific form processing/content selection that might be possible
|
||||
//Overrides the usual behavior of selecting the specific JavaScript class needed to convert the form inputs
|
||||
//into a JSON object for submission based on the page content type
|
||||
//VIVO Specific version includes individuals for classes data getter in addition to the others
|
||||
//The internal class specific processor class is in VIVO, while all other javascript files are in Vitro
|
||||
|
||||
var processDataGetterUtils = {
|
||||
dataGetterProcessorMap:{"browseClassGroup": processClassGroupDataGetterContent,
|
||||
"sparqlQuery": processSparqlDataGetterContent,
|
||||
"fixedHtml":processFixedHTMLDataGetterContent,
|
||||
"internalClass":processInternalClassDataGetterContent},
|
||||
selectDataGetterType:function(pageContentSection) {
|
||||
var contentType = pageContentSection.attr("contentType");
|
||||
//The form can provide "browse class group" as content type but need to check
|
||||
//whether this is in fact individuals for classes instead
|
||||
if(contentType == "browseClassGroup") {
|
||||
//Is ALL NOT selected and there are other classes, pick one
|
||||
//this SHOULD be an array
|
||||
var allClassesSelected = pageContentSection.find("input[name='allSelected']:checked");
|
||||
var isInternalSelected = pageContentSection.find("input[name='display-internalClass']:checked");
|
||||
//If all NOT selected then need to pick a different content type OR if internal class selected
|
||||
if( isInternalSelected.length > 0 || allClassesSelected.length == 0) {
|
||||
contentType = "internalClass";
|
||||
}
|
||||
}
|
||||
|
||||
return contentType;
|
||||
}
|
||||
};
|
|
@ -0,0 +1,30 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
var processIndividualsForClassesDataGetterContent = {
|
||||
dataGetterClass:null,
|
||||
//can use this if expect to initialize from elsewhere
|
||||
initProcessor:function(dataGetterClassInput) {
|
||||
this.dataGetterClass = dataGetterClassInput;
|
||||
},
|
||||
//Do we need a separate content type for each of the others?
|
||||
processPageContentSection:function(pageContentSection) {
|
||||
//Get classes selected
|
||||
var classesSelected = [];
|
||||
pageContentSection.find("input[name='classInClassGroup']:checked").each(function(){
|
||||
//Need to make sure that the class is also saved as a URI
|
||||
classesSelected.push($(this).val());
|
||||
});
|
||||
//If internal class selected, include here
|
||||
var isInternal:false;
|
||||
//if this checkbox is checked, then isInternal should be true
|
||||
pageContentSection.find("input[name='display-internalClass']:checked").each(function() {
|
||||
isInternal:true;
|
||||
});
|
||||
var returnObject = {classGroup:classGroup,
|
||||
classesSelectedInClassGroup:classesSelected,
|
||||
isInternal:isInternal,
|
||||
dataGetterClass:this.dataGetterClass};
|
||||
return returnObject;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.hp.hpl.jena.rdf.model.Literal;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo;
|
||||
|
||||
import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
import net.sf.json.JSONSerializer;
|
||||
//Returns the appropriate n3 for selection of classes from within class group
|
||||
public class ProcessInternalClassDataGetterN3 extends ProcessIndividualsForClassesDataGetterN3 {
|
||||
private static String classType = "java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.InternalClassesDataGetter";
|
||||
|
||||
private static String internalClassVarNameBase = "isInternal";
|
||||
public ProcessInternalClassDataGetterN3(JSONObject jsonObject){
|
||||
super(jsonObject);
|
||||
|
||||
}
|
||||
//Pass in variable that represents the counter
|
||||
|
||||
//Original menu managemenet didn't include the top level class group as type for internal classes
|
||||
//That can be included here if need be, but for now just adding the type alone
|
||||
public List<String> retrieveN3Required(int counter) {
|
||||
List<String> requiredN3 = new ArrayList<String>();
|
||||
String partialN3 = this.getN3ForTypePartial(counter) + ".";
|
||||
requiredN3.add(getPrefixes() + partialN3);
|
||||
requiredN3.addAll(this.addIndividualClassesN3(counter));
|
||||
return requiredN3;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//returns n3 defining internal class
|
||||
private List<String> addInternalClassN3(int counter) {
|
||||
List<String> internalClassN3 = new ArrayList<String>();
|
||||
String dataGetterVar = getDataGetterVar(counter);
|
||||
internalClassN3.add(dataGetterVar + "<" + DisplayVocabulary.RESTRICT_RESULTS_BY_INTERNAL + "> " +
|
||||
this.getN3VarName(internalClassVarNameBase, counter) + " .");
|
||||
return internalClassN3;
|
||||
|
||||
}
|
||||
|
||||
public List<String> retrieveN3Optional(int counter) {
|
||||
List<String> optionalN3 = new ArrayList<String>();
|
||||
//If internal add that as well
|
||||
optionalN3.addAll(this.addInternalClassN3(counter));
|
||||
return optionalN3;
|
||||
}
|
||||
|
||||
//These methods will return the literals and uris expected within the n3
|
||||
//and the counter is used to ensure they are numbered correctly
|
||||
|
||||
public List<String> retrieveLiteralsOnForm(int counter) {
|
||||
//no literals, just the class group URI
|
||||
List<String> literalsOnForm = new ArrayList<String>();
|
||||
literalsOnForm.add(getVarName(internalClassVarNameBase, counter));
|
||||
return literalsOnForm;
|
||||
|
||||
}
|
||||
|
||||
//URIs on form are same as individuals for class group so no need to reimplement
|
||||
|
||||
|
||||
|
||||
public List<FieldVTwo> retrieveFields(int counter) {
|
||||
List<FieldVTwo> fields = super.retrieveFields(counter);
|
||||
fields.add(new FieldVTwo().setName(getVarName(internalClassVarNameBase, counter)));
|
||||
|
||||
return fields;
|
||||
}
|
||||
|
||||
//These var names match the names of the elements within the json object returned with the info required for the data getter
|
||||
|
||||
public List<String> getLiteralVarNamesBase() {
|
||||
return Arrays.asList(internalClassVarNameBase);
|
||||
}
|
||||
|
||||
//these are for the fields ON the form
|
||||
public List<String> getUriVarNamesBase() {
|
||||
return Arrays.asList(individualClassVarNameBase);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClassType() {
|
||||
return classType;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue