diff --git a/webapp/ontologies/system/vitro-0.7.owl b/webapp/ontologies/system/vitro-0.7.owl index 33fff74e6..67db4843e 100644 --- a/webapp/ontologies/system/vitro-0.7.owl +++ b/webapp/ontologies/system/vitro-0.7.owl @@ -149,5 +149,7 @@ xmlns:vitro="&vitro;" + + diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/MenuManagementEdit.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/MenuManagementEdit.java index f57003a20..c6a1e98d5 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/MenuManagementEdit.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/MenuManagementEdit.java @@ -322,6 +322,15 @@ public class MenuManagementEdit extends VitroHttpServlet { ResourceFactory.createProperty(DisplayVocabulary.GETINDIVIDUALS_FOR_CLASS), ResourceFactory.createResource(classUri))); } + //Also check if internal class checked + String internalClass = vreq.getParameter("display-internalClass"); + if(internalClass != null && !internalClass.isEmpty()) { + //The value should be the internal class uri + dgModel.add(dgModel.createStatement( + dataGetterResource, + ResourceFactory.createProperty(DisplayVocabulary.RESTRICT_RESULTS_BY), + ResourceFactory.createResource(internalClass))); + } return dgModel; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/MenuManagementController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/MenuManagementController.java index 1c5b48366..689a93336 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/MenuManagementController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/MenuManagementController.java @@ -18,6 +18,7 @@ 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.jena.VClassGroupCache; import com.hp.hpl.jena.ontology.OntModel; @@ -36,6 +37,7 @@ import com.hp.hpl.jena.vocabulary.RDF; public class MenuManagementController extends FreemarkerHttpServlet { private static final Log log = LogFactory.getLog(MenuManagementController.class); protected final static String SUBMIT_FORM = "/processEditDisplayModel"; + protected final static String CANCEL_FORM = "/individual?uri=http%3A%2F%2Fvitro.mannlib.cornell.edu%2Fontologies%2Fdisplay%2F1.1%23DefaultMenu&switchToDisplayModel=true"; protected final static String EDIT_FORM = "testMenuManagement.ftl"; protected final static String CMD_PARAM = "cmd"; @@ -76,6 +78,9 @@ public class MenuManagementController extends FreemarkerHttpServlet { } //Form url submission data.put("formUrls", vreq.getContextPath() + SUBMIT_FORM); + data.put("cancelUrl", vreq.getContextPath() + CANCEL_FORM); + //This will be reset if internal class exists + data.put("internalClass", ""); return new TemplateResponseValues(EDIT_FORM, data); } @@ -109,6 +114,7 @@ public class MenuManagementController extends FreemarkerHttpServlet { Map data = new HashMap(); data.put("menuAction", "Add"); //Generate empty values for fields + data.put("menuItem", ""); data.put("menuName", ""); data.put("prettyUrl", ""); data.put("associatedPage", ""); @@ -266,6 +272,21 @@ public class MenuManagementController extends FreemarkerHttpServlet { this.getClassesForDataGetter(writeModel, dataGetter, data); //Also save the class group for display this.getClassGroupForDataGetter(writeModel, dataGetter, data); + //Check whether institutional internal class exists + this.checkInstitutionalInternalClass(writeModel, data); + this.checkIfPageInternal(writeModel, data); + + } + + private void checkIfPageInternal(OntModel writeModel, + Map data) { + if(data.containsKey("internalClass") && data.containsKey("restrictClasses")) { + List restrictClasses = (List)data.get("restrictClasses"); + String internalClass = (String) data.get("internalClass"); + if(restrictClasses.contains(internalClass)) { + data.put("pageInternalOnly", true); + } + } } @@ -279,41 +300,55 @@ public class MenuManagementController extends FreemarkerHttpServlet { } + //Instead of returning vclasses, just returning class Uris as vclasses appear to need their own template + //to show up correctly private void getClassesForDataGetter(OntModel writeModel, Resource dataGetter, Map data) { - VClassGroupCache vcgc = VClassGroupCache.getVClassGroupCache(getServletContext()); + StmtIterator classesIt = writeModel.listStatements(dataGetter, ResourceFactory.createProperty(DisplayVocabulary.GETINDIVIDUALS_FOR_CLASS), (RDFNode) null); - //TODO: Copied from IndividualsForClassesDataGetter, perhaps could reuse in separate method - VClassGroup classesGroup = new VClassGroup(); - classesGroup.setURI("displayClasses"); - List vClasses = new ArrayList(); + + //Just need the class uris + List classUris = new ArrayList(); while(classesIt.hasNext()) { String classUri = classesIt.nextStatement().getResource().getURI(); - VClass vclass = vcgc.getCachedVClass(classUri); - if(vclass != null) { - - log.debug("VClass does exist for " + classUri + " and entity count is " + vclass.getEntityCount()); - vClasses.add(vclass); - } else { - log.debug("Vclass " + classUri + " does not exist in the cache"); - log.error("Error occurred, vclass does not exist for this uri " + classUri); - //Throw exception here - } + classUris.add(classUri); } - data.put("includeClasses", classesGroup); - //TODO: Check if classes included are equivalent to classes in class group, and set "includeAllClasses" to true if so - + data.put("includeClasses", classUris); + + //This checks whether restrict classes returned and include institutional internal class + //TODO: Create separate method to get restricted classes + //Get restrict classes - specifically internal class + List restrictClassUris = new ArrayList(); + StmtIterator restrictClassesIt = writeModel.listStatements(dataGetter, + ResourceFactory.createProperty(DisplayVocabulary.RESTRICT_RESULTS_BY), + (RDFNode) null); + while(restrictClassesIt.hasNext()) { + String restrictClassUri = restrictClassesIt.nextStatement().getResource().getURI(); + restrictClassUris.add(restrictClassUri); + } + data.put("restrictClasses", restrictClassUris); + + } - //TODO: Create method to get restricted classes - //Get restrict classes - specifically internal class - //VClassGroup restrictClassesGroup = new VClassGroup(); - //restrictClassesGroup.setURI("restrictClasses"); - //List restrictVClasses = new ArrayList(); + + //Check whether any classes exist with internal class restrictions + private void checkInstitutionalInternalClass(OntModel writeModel, + Map data) { + OntModel mainModel = (OntModel) getServletContext().getAttribute("jenaOntModel"); + StmtIterator internalIt = mainModel.listStatements(null, ResourceFactory.createProperty(VitroVocabulary.IS_INTERNAL_CLASSANNOT), (RDFNode) null); + //List internalClasses = new ArrayList(); + if(internalIt.hasNext()) { + //internalClasses.add(internalIt.nextStatement().getResource().getURI()); + String internalClass = internalIt.nextStatement().getResource().getURI(); + data.put("internalClass", internalClass); + } + + } //Get the class page private void getClassGroupForDataGetter(OntModel writeModel, Resource dataGetter, diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/DisplayVocabulary.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/DisplayVocabulary.java index 8838cea93..cab2a0508 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/DisplayVocabulary.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/DisplayVocabulary.java @@ -62,6 +62,7 @@ public class DisplayVocabulary { public static final String HAS_TEXT_REPRESENTATION = NS + "hasMenuText"; + /**

The namespace of the vocabulary as a string

* @see #NS */ public static String getURI() {return NS;} diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java index 4ba887039..58c05673a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java @@ -103,7 +103,7 @@ public class VitroVocabulary { public static final String SKIP_EDIT_FORM = vitroURI + "skipEditForm"; public static final String PROPERTY_STUBOBJECTPROPERTYANNOT = vitroURI + "stubObjectPropertyAnnot"; public static final String PROPERTY_COLLATEBYSUBCLASSANNOT = vitroURI + "collateBySubclassAnnot"; - + public static final String IS_INTERNAL_CLASSANNOT = vitroURI + "isMenuPageIntersectionClass"; // ================== link related ===================================== public static final String LINK = vitroURI+"Link"; diff --git a/webapp/web/js/menupage/menumanagement_edit.js b/webapp/web/js/menupage/menumanagement_edit.js index 1143470ba..51fcc5cc1 100644 --- a/webapp/web/js/menupage/menumanagement_edit.js +++ b/webapp/web/js/menupage/menumanagement_edit.js @@ -26,22 +26,22 @@ var menuManagementEdit = { }); }, showClassGroups: function() { - if(!this.existingContentType.hasClass("hide")) { - this.existingContentType.addClass("hide"); - this.selectClassesMessage.addClass("hide"); - this.classesForClassGroup.addClass("hide"); + if(!this.existingContentType.hasClass("hidden")) { + this.existingContentType.addClass("hidden"); + this.selectClassesMessage.addClass("hidden"); + this.classesForClassGroup.addClass("hidden"); } - this.selectContentType.removeClass("hide"); + this.selectContentType.removeClass("hidden"); }, hideClassGroups: function() { - if(!this.selectContentType.hasClass("hide")) { + if(!this.selectContentType.hasClass("hidden")) { - this.selectContentType.addClass("hide"); + this.selectContentType.addClass("hidden"); } - this.existingContentType.removeClass("hide"); - this.selectClassesMessage.removeClass("hide"); - this.classesForClassGroup.removeClass("hide"); + this.existingContentType.removeClass("hidden"); + this.selectClassesMessage.removeClass("hidden"); + this.classesForClassGroup.removeClass("hidden"); }, chooseClassGroup: function() { @@ -56,13 +56,13 @@ var menuManagementEdit = { } else { //update existing content type with correct class group name and hide class group select again var _this = menuManagementEdit; - _this.hideClassGroups(); + menuManagementEdit.hideClassGroups(); - _this.selectedGroupForPage.html(results.classGroupName); + menuManagementEdit.selectedGroupForPage.html(results.classGroupName); //retrieve classes for class group and display with all selected - _this.classesForClassGroup.empty(); - _this.classesForClassGroup.append("
    "); - _this.classesForClassGroup.append('
  • ' + + menuManagementEdit.classesForClassGroup.empty(); + menuManagementEdit.classesForClassGroup.append('
      '); + menuManagementEdit.classesForClassGroup.append('
    • ' + '' + '' + '
    • '); @@ -75,7 +75,7 @@ var menuManagementEdit = { '' + ''); }); - _this.classesForClassGroup.append("
    "); + menuManagementEdit.classesForClassGroup.append("
"); } diff --git a/webapp/web/templates/freemarker/edit/forms/institutionalInternalClassForm.ftl b/webapp/web/templates/freemarker/edit/forms/institutionalInternalClassForm.ftl index 5f8b52f89..f8f8c04de 100644 --- a/webapp/web/templates/freemarker/edit/forms/institutionalInternalClassForm.ftl +++ b/webapp/web/templates/freemarker/edit/forms/institutionalInternalClassForm.ftl @@ -2,13 +2,13 @@ <#-- Institutional Internal Class Form -Associated with generator: -edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.InstitutionalInternalClassForm +edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.InstitutionalInternalClassForm. + --> -

Lorem ipsum dolor sit amet

+

Set up Institutional Internal Class

diff --git a/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl b/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl index 8c83fdef0..7324e237f 100644 --- a/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl +++ b/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl @@ -6,9 +6,9 @@ <#-- some additional processing here which shows or hides the class group selection and classes based on initial action--> <#assign existingClassGroupStyle = " " /> -<#assign selectClassGroupStyle = 'class="hide"' /> +<#assign selectClassGroupStyle = 'class="hidden"' /> <#if menuAction = "Add"> - <#assign existingClassGroupStyle = 'class="hide"' /> + <#assign existingClassGroupStyle = 'class="hidden"' /> <#assign selectClassGroupStyle = " " /> @@ -65,8 +65,8 @@ <#-- Select classes in a class group --> -

Select content to display

-
+

Select content to display

+
    <#--Adding a default class for "ALL" in case all classes selected--> @@ -76,7 +76,15 @@ <#list classGroup as classInClassGroup>
  • - checked /> + checked /> + <#if isIndividualsForClassesPage?has_content> + <#list includeClasses as includeClass> + <#if includeClass = classInClassGroup.URI> + checked + + + <#--sortable icon for dragging and dropping menu items-->
  • @@ -84,6 +92,22 @@
+ <#if internalClass?has_content> + <#assign enableInternalClass = '

To enable this option, you must first select an institutional internal class for your instance

' /> + <#assign disableClass = 'class="disable"' /> + <#else> + <#assign enableInternalClass = '' /> + <#assign disableClass = '' /> + + + checked + + /> + + ${enableInternalClass} + + or Cancel

* required fields