Adding edit link to menu pages. Changing visibility of SparqlQueryDataGetter.doQuery for testing.

This commit is contained in:
briancaruso 2012-02-15 20:24:53 +00:00
parent dafeafc5be
commit d6925f93c6
2 changed files with 26 additions and 4 deletions

View file

@ -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,6 +92,25 @@ 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<String,Object> getPageControllerValues(
String pageUri, VitroRequest vreq, ServletContext servletContext,
Map<String, Object> mapForTemplate) {
Map<String,Object> map = new HashMap<String,Object>();
//Add editing link for page if authorized
Map<String,Object> pageMap = (Map<String, Object>) 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<String, Object> mapForTemplate) {
//first try to get the body template from the display model RDF

View file

@ -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<String, Object> doQuery(Map<String, String[]>parameterMap, Model queryModel){
protected Map<String, Object> doQuery(Map<String, String[]>parameterMap, Model queryModel){
if( this.queryText == null ){
log.error("no SPARQL query defined for page " + this.dataGetterURI);