diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java index 736c7a7db..e270b8791 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java @@ -3,7 +3,6 @@ package edu.cornell.mannlib.vitro.webapp.controller.freemarker; -import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,10 +15,12 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; +import edu.cornell.mannlib.vitro.webapp.auth.policy.PolicyHelper; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ExceptionResponseValues; 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.utils.dataGetter.DataGetter; import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.DataGetterUtils; import edu.cornell.mannlib.vitro.webapp.utils.pageDataGetter.PageDataGetterUtils; @@ -68,6 +69,8 @@ public class PageController extends FreemarkerHttpServlet{ executePageDataGetters( pageUri, vreq, getServletContext(), mapForTemplate ); executeDataGetters( pageUri, vreq, getServletContext(), mapForTemplate); + mapForTemplate.putAll( getPageControllerValues( pageUri, vreq, getServletContext(), mapForTemplate)); + ResponseValues rv = new TemplateResponseValues(getTemplate( mapForTemplate ), mapForTemplate); return rv; } @@ -89,7 +92,26 @@ public class PageController extends FreemarkerHttpServlet{ mapForTemplate.putAll( PageDataGetterUtils.getDataForPage(pageUri, vreq, context) ); } - + /** + * Add any additional values to the template variable map that are related to the page. + * For example, editing links. + */ + private Map getPageControllerValues( + String pageUri, VitroRequest vreq, ServletContext servletContext, + Map mapForTemplate) { + Map map = new HashMap(); + + //Add editing link for page if authorized + Map pageMap = (Map) mapForTemplate.get("page"); + if( PolicyHelper.isAuthorizedForActions(vreq, SimplePermission.MANAGE_MENUS.ACTIONS) ){ + String editPageUrl = UrlBuilder.getIndividualProfileUrl(pageUri, vreq); + editPageUrl = UrlBuilder.addParams(editPageUrl, DisplayVocabulary.SWITCH_TO_DISPLAY_MODEL , "1"); + pageMap.put("URLToEditPage", editPageUrl); + } + + return map; + } + private String getTemplate(Map mapForTemplate) { //first try to get the body template from the display model RDF if( mapForTemplate.containsKey("page") ){ 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 359a42b82..880de90ba 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 @@ -109,7 +109,7 @@ public class SparqlQueryDataGetter extends DataGetterBase implements DataGetter{ * Do the query and return a result. This is in its own method * to make testing easy. */ - private Map doQuery(MapparameterMap, Model queryModel){ + protected Map doQuery(MapparameterMap, Model queryModel){ if( this.queryText == null ){ log.error("no SPARQL query defined for page " + this.dataGetterURI);