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 c6a1e98d5..35c02387c 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 @@ -85,10 +85,10 @@ public class MenuManagementEdit extends VitroHttpServlet { System.out.println("Command is null"); } //Need to redirect correctly - //if(!isReorder(command)){ - //RequestDispatcher rd = rawRequest.getRequestDispatcher(REDIRECT_URL); - //rd.forward(rawRequest, resp); - //} + if(!isReorder(command)){ + RequestDispatcher rd = rawRequest.getRequestDispatcher(REDIRECT_URL); + rd.forward(rawRequest, resp); + } } @@ -234,11 +234,13 @@ public class MenuManagementEdit extends VitroHttpServlet { private void processAdd(String menuItem, OntModel displayModel, String command, VitroRequest vreq) { - Resource menuItemResource = createNewMenuItem(menuItem, displayModel); + String menuName = vreq.getParameter("menuName"); + Resource menuItemResource = createNewMenuItem(menuName, displayModel); Resource pageResource = createNewPage(menuItemResource, displayModel); - associateMenuItemToPage(menuItemResource, pageResource); //no statements to remove, just to add addStatements = getStatementsToAdd(vreq, command, displayModel, menuItemResource, pageResource); + addStatements.add(associateMenuItemToPage(menuItemResource, pageResource)); + } //Get last menu item positin @@ -285,7 +287,7 @@ public class MenuManagementEdit extends VitroHttpServlet { String classGroup = vreq.getParameter("selectClassGroup"); //Selected class - String allClasses = vreq.getParameter("allSelected"); + //For this, need to check whether All or not b/c this will identify the data getter type //There should be a "specify data getter" method that specifices the data getter Resource dataGetterResource = getDataGetter(vreq, addModel, displayModel, pageResource); @@ -299,7 +301,7 @@ public class MenuManagementEdit extends VitroHttpServlet { classGroupResource)); //If "All selected" then use class group else use individuals for classes Model dataGetterModel = ModelFactory.createDefaultModel(); - if(allClasses != null && !allClasses.isEmpty()) { + if(!internalClassSelected(vreq) && allClassesSelected(vreq)) { dataGetterModel = getClassGroupDataGetter(vreq, dataGetterResource, addModel, displayModel); } else { dataGetterModel = getIndividualsForClassesDataGetter(vreq, dataGetterResource, addModel, displayModel); @@ -311,6 +313,16 @@ public class MenuManagementEdit extends VitroHttpServlet { } + private boolean allClassesSelected(VitroRequest vreq) { + String allClasses = vreq.getParameter("allSelected"); + return (allClasses != null && !allClasses.isEmpty()); + } + + private boolean internalClassSelected(VitroRequest vreq) { + String internalClass = vreq.getParameter("display-internalClass"); + return (internalClass != null && !internalClass.isEmpty()); + } + private Model getIndividualsForClassesDataGetter(VitroRequest vreq, Resource dataGetterResource, Model addModel, OntModel displayModel) { String[] selectedClasses = vreq.getParameterValues("classInClassGroup"); @@ -322,9 +334,10 @@ 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()) { + if(internalClassSelected(vreq)) { + String internalClass = vreq.getParameter("display-internalClass"); //The value should be the internal class uri dgModel.add(dgModel.createStatement( dataGetterResource, @@ -445,7 +458,7 @@ public class MenuManagementEdit extends VitroHttpServlet { String dataGetterUriBase = pageResource.getURI() + "-dataGetter"; String dataGetterUri = dataGetterUriBase; int counter = 0; - while(displayModel.getResource(dataGetterUriBase) != null) { + while(displayModel.getIndividual(dataGetterUriBase) != null) { dataGetterUri = dataGetterUriBase + counter; counter++; } @@ -510,8 +523,10 @@ public class MenuManagementEdit extends VitroHttpServlet { } //Create connection - private void associateMenuItemToPage(Resource menuItemResource, Resource pageResource) { - menuItemResource.addProperty(DisplayVocabulary.TO_PAGE, pageResource); + private Model associateMenuItemToPage(Resource menuItemResource, Resource pageResource) { + Model m = ModelFactory.createDefaultModel(); + m.add(m.createStatement(menuItemResource, DisplayVocabulary.TO_PAGE, pageResource)); + return m; } //Add to model @@ -522,7 +537,7 @@ public class MenuManagementEdit extends VitroHttpServlet { String menuUriBase = DisplayVocabulary.DISPLAY_NS + menuName.replaceAll(" ", "") + "MenuItem"; String menuUri = menuUriBase; int counter = 0; - while(displayModel.getResource(menuUri) != null) { + while(displayModel.getIndividual(menuUri) != null) { menuUri = menuUriBase + counter; counter++; } 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 689a93336..b3e65fba7 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 @@ -59,12 +59,8 @@ public class MenuManagementController extends FreemarkerHttpServlet { protected ResponseValues processRequest(VitroRequest vreq) { //Parameters should include the menu item being edited/added/removed/reordered Map data = new HashMap(); - - //if no menu item passed, return empty data - //TODO: Check if exception needs to be thrown - - + //TODO: Check if exception needs to be thrown String cmd = getCommand(vreq); if(cmd.equals(ADD_PARAM_VALUE)) { @@ -76,13 +72,18 @@ public class MenuManagementController extends FreemarkerHttpServlet { } else { //Throw some kind of error or do nothing } + + this.initializeData(data, vreq); + return new TemplateResponseValues(EDIT_FORM, data); + + } + + //Certain parameters are always passed + private void initializeData(Map data, VitroRequest vreq) { //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); - + data.put("internalClassUri", ""); } //Based on parameters, ascertain command @@ -105,6 +106,7 @@ public class MenuManagementController extends FreemarkerHttpServlet { Map data = new HashMap(); data.put("menuItem", menuItem); data.put("menuAction", "Remove"); + this.getMenuItemData(vreq, menuItem, data); this.getPageData(vreq, data); return data; @@ -126,7 +128,8 @@ public class MenuManagementController extends FreemarkerHttpServlet { data.put("classGroups", this.getClassGroups()); data.put("selectedTemplateType", "default"); //defaults to regular class group page - + //Check whether institutional internal class exists + this.checkInstitutionalInternalClass(data); return data; } @@ -138,12 +141,11 @@ public class MenuManagementController extends FreemarkerHttpServlet { //Get parameter for menu item String menuItem = getMenuItem(vreq); data.put("menuItem", menuItem); - data.put("menuAction", "Edit"); //Get All class groups data.put("classGroups", this.getClassGroups()); - - + //Check whether institutional internal class exists + this.checkInstitutionalInternalClass(data); //Get data for menu item and associated page this.getMenuItemData(vreq, menuItem, data); this.getPageData(vreq, data); @@ -244,6 +246,7 @@ public class MenuManagementController extends FreemarkerHttpServlet { //All items will have data getter except for Browse or Home page //Home can be edited but not removed private void getPageDataGetterInfo(OntModel writeModel, Resource page, Map data) { + //Alternative is to do this via sparql query StmtIterator dataGetterIt = writeModel.listStatements(page, ResourceFactory.createProperty(DisplayVocabulary.HAS_DATA_GETTER), (RDFNode) null); while(dataGetterIt.hasNext()) { @@ -272,8 +275,6 @@ 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); } @@ -295,6 +296,7 @@ public class MenuManagementController extends FreemarkerHttpServlet { //This is a class group page so data.put("isClassGroupPage", true); data.put("includeAllClasses", true); + //Get the class group this.getClassGroupForDataGetter(writeModel, dataGetter, data); @@ -337,8 +339,7 @@ public class MenuManagementController extends FreemarkerHttpServlet { //Check whether any classes exist with internal class restrictions - private void checkInstitutionalInternalClass(OntModel writeModel, - Map data) { + private void checkInstitutionalInternalClass(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(); @@ -346,6 +347,7 @@ public class MenuManagementController extends FreemarkerHttpServlet { //internalClasses.add(internalIt.nextStatement().getResource().getURI()); String internalClass = internalIt.nextStatement().getResource().getURI(); data.put("internalClass", internalClass); + data.put("internalClassUri", internalClass); } } diff --git a/webapp/web/js/menupage/menumanagement_edit.js b/webapp/web/js/menupage/menumanagement_edit.js index 51fcc5cc1..037113b9b 100644 --- a/webapp/web/js/menupage/menumanagement_edit.js +++ b/webapp/web/js/menupage/menumanagement_edit.js @@ -13,6 +13,7 @@ var menuManagementEdit = { this.classesForClassGroup = $('#classesInSelectedGroup'); this.selectedGroupForPage = $('#selectedContentTypeValue'); this.selectClassesMessage = $('#selectClassesMessage'); + this.allClassesSelectedCheckbox = $('#allSelected'); }, bindEventListeners: function() { @@ -24,6 +25,9 @@ var menuManagementEdit = { this.selectClassGroupDropdown.change(function() { menuManagementEdit.chooseClassGroup(); }); + this.allClassesSelectedCheckbox.change(function() { + menuManagementEdit.toggleClassSelection(); + }); }, showClassGroups: function() { if(!this.existingContentType.hasClass("hidden")) { @@ -43,6 +47,17 @@ var menuManagementEdit = { this.selectClassesMessage.removeClass("hidden"); this.classesForClassGroup.removeClass("hidden"); }, + toggleClassSelection:function() { + /*To do: please fix so selecting all selects all classes and deselecting + * any class will deselect all + */ + /* + if(this.allClassesSelectedCheckbox.is(':checked')) { + $('#classInClassGroup').attr('checked', 'checked'); + } else { + $('#classInClassGroup').removeAttr('checked'); + }*/ + }, chooseClassGroup: function() { var url = "dataservice?getVClassesForVClassGroup=1&classgroupUri="; @@ -61,21 +76,23 @@ var menuManagementEdit = { menuManagementEdit.selectedGroupForPage.html(results.classGroupName); //retrieve classes for class group and display with all selected menuManagementEdit.classesForClassGroup.empty(); - menuManagementEdit.classesForClassGroup.append('
    '); - menuManagementEdit.classesForClassGroup.append('
  • ' + - '' + + var appendHtml = '
      '; + appendHtml += '
        '; + appendHtml += '
      • ' + + '' + '' + - '
      • '); + ''; $.each(results.classes, function(i, item) { var thisClass = results.classes[i]; var thisClassName = thisClass.name; //When first selecting new content type, all classes should be selected - menuManagementEdit.classesForClassGroup.append('
      • ' + - '' + + appendHtml += '
      • ' + + '' + '' + - '
      • '); + ''; }); - menuManagementEdit.classesForClassGroup.append("
      "); + appendHtml += "
    "; + menuManagementEdit.classesForClassGroup.append(appendHtml); } diff --git a/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl b/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl index ecce65e7f..1b6e3acd6 100644 --- a/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl +++ b/webapp/web/templates/freemarker/edit/forms/testMenuManagement.ftl @@ -94,14 +94,15 @@
    <#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 enableInternalClass = '' /> <#assign disableClass = '' /> + + <#else> + <#assign enableInternalClass = '

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

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