From 9ca30d634abb9964488364be93b2f138845ac4f1 Mon Sep 17 00:00:00 2001 From: hjkhjk54 Date: Fri, 22 Jun 2012 17:56:02 +0000 Subject: [PATCH] updates for page management --- .../utils/ProcessSparqlDataGetterN3.java | 8 +- .../dataGetter/SparqlQueryDataGetter.java | 2 + webapp/web/WEB-INF/ontologies/app/menu.n3 | 9 +- .../ontologies/app/menuload/displayTBOX.n3 | 5 +- webapp/web/js/menupage/pageManagementUtils.js | 136 +++++++++++------- .../web/js/menupage/processDataGetterUtils.js | 3 + .../body/menupage/menupage--defaultSparql.ftl | 6 +- .../forms/pageManagement--sparqlQuery.ftl | 3 +- 8 files changed, 114 insertions(+), 58 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/utils/ProcessSparqlDataGetterN3.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/utils/ProcessSparqlDataGetterN3.java index 79136b506..430dcbb73 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/utils/ProcessSparqlDataGetterN3.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/utils/ProcessSparqlDataGetterN3.java @@ -40,7 +40,6 @@ public class ProcessSparqlDataGetterN3 extends ProcessDataGetterAbstract { public List retrieveN3Required(int counter) { String dataGetterVar = getDataGetterVar(counter); String n3 = dataGetterVar + " a <" + classType + ">; \n" + - "display:queryModel " + getN3VarName("queryModel", counter) + "; \n" + "display:saveToVar " + getN3VarName("saveToVar", counter) + "; \n" + "display:query " + getN3VarName("query", counter) + " ."; List requiredList = new ArrayList(); @@ -48,8 +47,13 @@ public class ProcessSparqlDataGetterN3 extends ProcessDataGetterAbstract { return requiredList; } + //Query model is optional public List retrieveN3Optional(int counter) { - return null; + String dataGetterVar = getDataGetterVar(counter); + String n3 = dataGetterVar + " display:queryModel " + getN3VarName("queryModel", counter) + ". "; + List optionalList = new ArrayList(); + optionalList.add(getPrefixes() + n3); + return optionalList; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java index e53847c55..b1533acb7 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SparqlQueryDataGetter.java @@ -142,6 +142,8 @@ public class SparqlQueryDataGetter extends DataGetterBase implements DataGetter{ //put results in page data, what key to use for results? Map rmap = new HashMap(); + //also store the variable name within which results will be returned + rmap.put("variableName", this.saveToVar); rmap.put(this.saveToVar, results); //This will be overridden at page level in display model if template specified there rmap.put("bodyTemplate", defaultTemplate); diff --git a/webapp/web/WEB-INF/ontologies/app/menu.n3 b/webapp/web/WEB-INF/ontologies/app/menu.n3 index d1cacc266..a04b773a1 100644 --- a/webapp/web/WEB-INF/ontologies/app/menu.n3 +++ b/webapp/web/WEB-INF/ontologies/app/menu.n3 @@ -27,7 +27,8 @@ display:Home a display:Page ; display:title "Home" ; display:urlMapping "/" ; - display:hasDataGetter display:homeDataGetter . + display:hasDataGetter display:homeDataGetter; + display:cannotDeletePage "true" . ########## Data Getter ############ @@ -40,7 +41,8 @@ display:pageListPage display:title "Pages" ; display:urlMapping "/pageList" ; display:requiresBodyTemplate "pageList.ftl" ; - display:hasDataGetter display:pageListData . + display:hasDataGetter display:pageListData; + display:cannotDeletePage "true" . display:pageListData a ; @@ -50,13 +52,14 @@ display:pageListData display:query """ PREFIX display: PREFIX rdfs: - SELECT ?listedPageUri ?listedPageTitle ?listedPageUrlMapping ?listedPageTemplate ?listedPageMenuItem + SELECT ?listedPageUri ?listedPageTitle ?listedPageUrlMapping ?listedPageTemplate ?listedPageMenuItem ?listedPageCannotDeletePage WHERE { ?listedPageUri a display:Page . OPTIONAL{ ?listedPageUri display:urlMapping ?listedPageUrlMapping. } OPTIONAL{ ?listedPageUri display:title ?listedPageTitle. } OPTIONAL {?listedPageUri display:requiresBodyTemplate ?listedPageTemplate .} OPTIONAL {?listedPageMenuItem display:toPage ?listedPageUri .} + OPTIONAL {?listedPageUri display:cannotDeletePage ?listedPageCannotDeletePage .} } """ . ###Page Management and Data Getters #Data getter type labels diff --git a/webapp/web/WEB-INF/ontologies/app/menuload/displayTBOX.n3 b/webapp/web/WEB-INF/ontologies/app/menuload/displayTBOX.n3 index 0caf9988f..21e51e906 100644 --- a/webapp/web/WEB-INF/ontologies/app/menuload/displayTBOX.n3 +++ b/webapp/web/WEB-INF/ontologies/app/menuload/displayTBOX.n3 @@ -115,7 +115,10 @@ owl:versionInfo a owl:DatatypeProperty. - a owl:DatatypeProperty. + a owl:DatatypeProperty. + + + a owl:DatatypeProperty. ######### Object Properties######### ###Basic diff --git a/webapp/web/js/menupage/pageManagementUtils.js b/webapp/web/js/menupage/pageManagementUtils.js index 4338799d5..bb3879737 100644 --- a/webapp/web/js/menupage/pageManagementUtils.js +++ b/webapp/web/js/menupage/pageManagementUtils.js @@ -116,7 +116,9 @@ var pageManagementUtils = { this.menuSection = $("section#menu"); this.submitButton = $("input#submit"); this.leftSideDiv = $("div#leftSide"); - this.rightSideDiv = $("div#rightSide") + this.rightSideDiv = $("div#rightSide"); + //contentDivs container where content added/existing placed + this.savedContentDivs = $("section#contentDivs"); }, initDisplay: function(){ //right side components @@ -191,7 +193,12 @@ var pageManagementUtils = { pageManagementUtils.resetClassGroupSection(); //Clear all inputs values pageManagementUtils.clearSourceTemplateValues(); + //If adding browse classgroup, need to remove the classgroup option from the dropdown + if(selectedType == "browseClassGroup") { + pageManagementUtils.handleAddBrowseClassGroupPageContent(); + } pageManagementUtils.contentTypeSelect.focus(); + }); //replacing with menu management edit version which is extended with some of the logic below @@ -200,49 +207,7 @@ var pageManagementUtils = { }); this.contentTypeSelect.change( function() { - _this = pageManagementUtils; - pageManagementUtils.clearSourceTemplateValues(); - if ( _this.contentTypeSelect.val() == "browseClassGroup" ) { - pageManagementUtils.classGroupSection.show(); - pageManagementUtils.fixedHTMLSection.hide(); - pageManagementUtils.sparqlQuerySection.hide(); - pageManagementUtils.moreContentButton.hide(); - pageManagementUtils.headerBar.text("Browse Class Group - "); - pageManagementUtils.headerBar.show(); - } - if ( _this.contentTypeSelect.val() == "fixedHtml" || _this.contentTypeSelect.val() == "sparqlQuery" ) { - pageManagementUtils.classGroupSection.hide(); - //if fixed html show that, otherwise show sparq - if ( _this.contentTypeSelect.val() == "fixedHtml" ) { - pageManagementUtils.headerBar.text("Fixed HTML - "); - pageManagementUtils.fixedHTMLSection.show(); - pageManagementUtils.sparqlQuerySection.hide(); - } - else { - pageManagementUtils.headerBar.text("SPARQL Query Results - "); - pageManagementUtils.sparqlQuerySection.show(); - pageManagementUtils.fixedHTMLSection.hide(); - } - - pageManagementUtils.headerBar.show(); - //$('select#selectClassGroup option').eq(0).attr('selected', 'selected'); - pageManagementUtils.classesForClassGroup.addClass('hidden'); - pageManagementUtils.moreContentButton.show(); - } - if ( _this.contentTypeSelect.val() == "" ) { - pageManagementUtils.classGroupSection.hide(); - pageManagementUtils.fixedHTMLSection.hide(); - pageManagementUtils.sparqlQuerySection.hide(); - - pageManagementUtils.moreContentButton.hide(); - - //$('select#selectClassGroup option').eq(0).attr('selected', 'selected'); - - pageManagementUtils.classesForClassGroup.addClass('hidden'); - pageManagementUtils.headerBar.hide(); - pageManagementUtils.headerBar.text(""); - } - pageManagementUtils.adjustSaveButtonHeight(); + pageManagementUtils.handleContentTypeSelect(); }); @@ -252,21 +217,69 @@ var pageManagementUtils = { if (validationError == "") { //Create the appropriate json objects pageManagementUtils.createPageContentForSubmission(); - //return true; - //For testing, not submitting anything - //event.preventDefault(); return true; } else{ $('#error-alert').removeClass('hidden'); $('#error-alert p').html(validationError); - //TODO: Check why scrolling appears to be a problem $.scrollTo({ top:0, left:0}, 500) return false; } }); }, + //Select content type + handleContentTypeSelect:function() { + _this = pageManagementUtils; + pageManagementUtils.clearSourceTemplateValues(); + if ( _this.contentTypeSelect.val() == "browseClassGroup" ) { + pageManagementUtils.classGroupSection.show(); + pageManagementUtils.fixedHTMLSection.hide(); + pageManagementUtils.sparqlQuerySection.hide(); + pageManagementUtils.moreContentButton.hide(); + pageManagementUtils.headerBar.text("Browse Class Group - "); + pageManagementUtils.headerBar.show(); + } + if ( _this.contentTypeSelect.val() == "fixedHtml" || _this.contentTypeSelect.val() == "sparqlQuery" ) { + pageManagementUtils.classGroupSection.hide(); + //if fixed html show that, otherwise show sparql results + if ( _this.contentTypeSelect.val() == "fixedHtml" ) { + pageManagementUtils.headerBar.text("Fixed HTML - "); + pageManagementUtils.fixedHTMLSection.show(); + pageManagementUtils.sparqlQuerySection.hide(); + } + else { + pageManagementUtils.headerBar.text("SPARQL Query Results - "); + pageManagementUtils.sparqlQuerySection.show(); + pageManagementUtils.fixedHTMLSection.hide(); + } + + pageManagementUtils.headerBar.show(); + pageManagementUtils.classesForClassGroup.addClass('hidden'); + pageManagementUtils.moreContentButton.show(); + } + if ( _this.contentTypeSelect.val() == "" ) { + pageManagementUtils.classGroupSection.hide(); + pageManagementUtils.fixedHTMLSection.hide(); + pageManagementUtils.sparqlQuerySection.hide(); + pageManagementUtils.moreContentButton.hide(); + pageManagementUtils.classesForClassGroup.addClass('hidden'); + pageManagementUtils.headerBar.hide(); + pageManagementUtils.headerBar.text(""); + } + //Collapse any divs for existing content if it exists + pageManagementUtils.collapseAllExistingContent(); + //adjust save button height + pageManagementUtils.adjustSaveButtonHeight(); + }, + collapseAllExistingContent:function() { + var $clickableSpan = $newDivContainer.children('span#clickable' + counter); + var $innerDiv = $newDivContainer.children('div#innerContainer' + counter); + var spanArrows = pageManagementUtils.savedContentDivs.find("span.pageContentExpand div.arrow"); + spanArrows.removeClass("collapseArrow"); + spanArrows.addClass("expandArrow"); + pageManagementUtils.savedContentDivs.find("div.pageContentContainer div.pageContentWrapper").slideUp(222); + }, //Clear values in content areas that are cloned to create the page content type specific sections //i.e. reset sparql query/class group areas //TODO: Check if reset is more what we need here? @@ -373,9 +386,15 @@ var pageManagementUtils = { }); //remove button $newRemoveButton = $innerDiv.find('input#remove' + counter); - // this will have to disable submitted fields as well as hide them. + //remove the content entirely $newRemoveButton.click(function() { - //$innerDiv.parent("div").css("display","none"); + //if content type of what is being deleted is browse class group, then + //add browse classgroup back to set of options + var contentType = $innerDiv.find("section.pageContent").attr("contentType"); + if(pageManagementUtils.processDataGetterUtils.isRelatedToBrowseClassGroup(contentType)) { + pageManagementUtils.handleRemoveBrowseClassGroupPageContent(); + } + //remove the section $innerDiv.parent("div").remove(); pageManagementUtils.adjustSaveButtonHeight(); }); @@ -625,6 +644,10 @@ var pageManagementUtils = { dataGetterProcessorObject.populatePageContentSection(JSONContentObject, $newContentObj); //Also include a hidden input with data getter URI pageManagementUtils.includeDataGetterURI(JSONContentObject, $newContentObj); + //If content type is browseClassGroup or other 'related types' that are derived from it + if(pageManagementUtils.processDataGetterUtils.isRelatedToBrowseClassGroup(contentType)) { + pageManagementUtils.handleAddBrowseClassGroupPageContent(); + } } else { //error condition } @@ -648,6 +671,19 @@ var pageManagementUtils = { dataGetterProcessor = pageManagementUtils.dataGetterProcessorMap[dataGetterType]; } return dataGetterProcessor; + }, + handleAddBrowseClassGroupPageContent:function() { + //if browse class group content has been added, then remove browse classgroup option from dropdown + if(pageManagementUtils.contentTypeSelect.find("option[value='browseClassGroup']").length > 0) { + pageManagementUtils.contentTypeSelect.find("option[value='browseClassGroup']").remove(); + } + }, + handleRemoveBrowseClassGroupPageContent:function() { + if(pageManagementUtils.contentTypeSelect.find("option[value='browseClassGroup']").length == 0) { + //if removed, add browse class group back + var classGroupOption = ''; + pageManagementUtils.contentTypeSelect.find('option:eq(0)').after(classGroupGroupOption); + } } }; diff --git a/webapp/web/js/menupage/processDataGetterUtils.js b/webapp/web/js/menupage/processDataGetterUtils.js index 9744bbe99..094fee8da 100644 --- a/webapp/web/js/menupage/processDataGetterUtils.js +++ b/webapp/web/js/menupage/processDataGetterUtils.js @@ -25,5 +25,8 @@ var processDataGetterUtils = { } return contentType; + }, + isRelatedToBrowseClassGroup:function(contentType) { + return (contentType == "browseClassGroup" || contentType == "individualsForClasses"); } }; \ No newline at end of file diff --git a/webapp/web/templates/freemarker/body/menupage/menupage--defaultSparql.ftl b/webapp/web/templates/freemarker/body/menupage/menupage--defaultSparql.ftl index 599bfe5b7..c937ba034 100644 --- a/webapp/web/templates/freemarker/body/menupage/menupage--defaultSparql.ftl +++ b/webapp/web/templates/freemarker/body/menupage/menupage--defaultSparql.ftl @@ -2,8 +2,12 @@ <#--Save to variable is sparqlResults --> <#assign resultsExist = false/> -<#if sparqlResults?has_content> +<#if variableName?has_content> <#assign resultsExist = true/> + <#--This will retrieve the results stored in the variable name being returned from the sparql query. + For example, if "results" was specified as the variable storing the sparql results, the value + of "results" will not be assigned to "sparqlResults" below. --> + <#assign sparqlResults = .globals[variableName]/>

Sparql Query Results

diff --git a/webapp/web/templates/freemarker/edit/forms/pageManagement--sparqlQuery.ftl b/webapp/web/templates/freemarker/edit/forms/pageManagement--sparqlQuery.ftl index dc7da786f..e453d7fda 100644 --- a/webapp/web/templates/freemarker/edit/forms/pageManagement--sparqlQuery.ftl +++ b/webapp/web/templates/freemarker/edit/forms/pageManagement--sparqlQuery.ftl @@ -4,7 +4,8 @@ - + <#--Hiding query model for now--> +