diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java index 624cfd0cf..c27e9afba 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java @@ -40,7 +40,7 @@ public class PrimitiveRdfEdit extends FreemarkerHttpServlet{ } @Override - protected int requiresLoginLevel() { + protected int requiredLoginLevel() { return LoginStatusBean.EDITOR; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerComponentGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerComponentGenerator.java index efff6c128..37ee89911 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerComponentGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerComponentGenerator.java @@ -43,6 +43,8 @@ public class FreemarkerComponentGenerator extends FreemarkerHttpServlet { request.setAttribute("ftl_search", get("search", root, config, vreq)); request.setAttribute("ftl_footer", get("footer", root, config, vreq)); request.setAttribute("ftl_googleAnalytics", get("googleAnalytics", root, config, vreq)); + + request.setAttribute("freemarkerComponentsDone", true); } private String get(String templateName, Map root, Configuration config, HttpServletRequest request) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java index c6e8d3771..5ef15d567 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java @@ -32,6 +32,7 @@ import edu.cornell.mannlib.vitro.webapp.utils.StringUtils; import edu.cornell.mannlib.vitro.webapp.web.BreadCrumbsUtil; import edu.cornell.mannlib.vitro.webapp.web.ContentType; import edu.cornell.mannlib.vitro.webapp.web.PortalWebUtil; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.User; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.files.Scripts; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.files.Stylesheets; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.menu.TabMenu; @@ -45,7 +46,7 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { private static final long serialVersionUID = 1L; private static final Log log = LogFactory.getLog(FreemarkerHttpServlet.class); - private static final int FILTER_SECURITY_LEVEL = LoginStatusBean.EDITOR; + public static final String PAGE_TEMPLATE_TYPE = "page"; public static final String BODY_TEMPLATE_TYPE = "body"; @@ -108,7 +109,7 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { } private boolean requiredLoginLevelNotFound(HttpServletRequest request, HttpServletResponse response) { - int requiredLoginLevel = requiresLoginLevel(); + int requiredLoginLevel = requiredLoginLevel(); // checkLoginStatus() does a redirect if the user is not logged in. if (requiredLoginLevel > LoginStatusBean.ANYBODY && !checkLoginStatus(request, response, requiredLoginLevel)) { return true; @@ -116,11 +117,7 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { return false; } - protected boolean requiresLogin() { - return false; - } - - protected int requiresLoginLevel() { + protected int requiredLoginLevel() { // By default, user does not need to be logged in to view pages. // Subclasses that require login to process their page will override to return the required login level. // NB This method can't be static, because then the superclass method gets called rather than @@ -382,7 +379,7 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { PortalWebUtil.populateSearchOptions(portal, appBean, vreq.getWebappDaoFactory().getPortalDao()); PortalWebUtil.populateNavigationChoices(portal, vreq, appBean, vreq.getWebappDaoFactory().getPortalDao()); - map.putAll(getLoginValues(vreq)); + map.put("user", new User(vreq)); UrlBuilder urlBuilder = new UrlBuilder(portal); map.put("version", getRevisionInfo(urlBuilder)); @@ -409,29 +406,10 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { return map; } - private TabMenu getTabMenu(VitroRequest vreq) { int portalId = vreq.getPortal().getPortalId(); return new TabMenu(vreq, portalId); } - - private final Map getLoginValues(VitroRequest vreq) { - Map map = new HashMap(); - - LoginStatusBean loginBean = LoginStatusBean.getBean(vreq); - if (loginBean.isLoggedIn()) { - map.put("loginName", loginBean.getUsername()); - - if (loginBean.isLoggedInAtLeast(FILTER_SECURITY_LEVEL)) { - ApplicationBean appBean = vreq.getAppBean(); - if (appBean.isFlag1Active()) { - map.put("showFlag1SearchField", true); - } - } - } - - return map; - } private final Map getCopyrightInfo(Portal portal) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java index 5e513a967..8f067feca 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java @@ -52,7 +52,7 @@ import edu.cornell.mannlib.vitro.webapp.utils.NamespaceMapper; import edu.cornell.mannlib.vitro.webapp.utils.NamespaceMapperFactory; import edu.cornell.mannlib.vitro.webapp.web.ContentType; import edu.cornell.mannlib.vitro.webapp.web.jsptags.StringProcessorTag; -import edu.cornell.mannlib.vitro.webapp.web.templatemodels.IndividualTemplateModel; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModel; /** * Handles requests for entity information. diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java index b1d932eb4..b51916bf1 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java @@ -16,7 +16,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet.ResponseValues; import edu.cornell.mannlib.vitro.webapp.utils.StringUtils; -import edu.cornell.mannlib.vitro.webapp.web.templatemodels.IndividualTemplateModel; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModel; import freemarker.template.Configuration; /** diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/RevisionInfoController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/RevisionInfoController.java index 78bfd4202..31aa537cb 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/RevisionInfoController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/RevisionInfoController.java @@ -19,10 +19,20 @@ public class RevisionInfoController extends FreemarkerHttpServlet { private static final long serialVersionUID = 1L; private static final Log log = LogFactory.getLog(RevisionInfoController.class); private static final String TEMPLATE_DEFAULT = "revisionInfo.ftl"; + private static final int REQUIRED_LOGIN_LEVEL = LoginStatusBean.EDITOR; + /* requiredLoginLevel() must be an instance method, else, due to the way sublcass + * hiding works, when called from FreemarkerHttpServlet we will get its own method, + * rather than the subclass method. To figure out whether to display links at the + * page level, we need another, static method. + */ + public static int staticRequiredLoginLevel() { + return REQUIRED_LOGIN_LEVEL; + } + @Override - protected int requiresLoginLevel() { - return LoginStatusBean.EDITOR; + protected int requiredLoginLevel() { + return REQUIRED_LOGIN_LEVEL; } @Override diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java index b474c1b8a..b91075f5e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java @@ -28,16 +28,25 @@ public class SiteAdminController extends FreemarkerHttpServlet { private static final long serialVersionUID = 1L; private static final Log log = LogFactory.getLog(SiteAdminController.class); private static final String TEMPLATE_DEFAULT = "siteAdmin-main.ftl"; + private static final int REQUIRED_LOGIN_LEVEL = LoginStatusBean.EDITOR; @Override public String getTitle(String siteName) { return siteName + " Site Administration"; } + /* requiredLoginLevel() must be an instance method, else, due to the way sublcass + * hiding works, when called from FreemarkerHttpServlet we will get its own method, + * rather than the subclass method. To figure out whether to display links at the + * page level, we need another, static method. + */ + public static int staticRequiredLoginLevel() { + return REQUIRED_LOGIN_LEVEL; + } + @Override - protected int requiresLoginLevel() { - // User must be logged in to view this page. - return LoginStatusBean.EDITOR; + protected int requiredLoginLevel() { + return REQUIRED_LOGIN_LEVEL; } @Override diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java index 22c3a01c8..475aa7ad7 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/TestController.java @@ -36,14 +36,15 @@ public class TestController extends FreemarkerHttpServlet { Map body = new HashMap(); body.put("title", "Freemarker Test"); - + return new TemplateResponseValues(TEMPLATE_DEFAULT, body); + } @Override protected String getTitle(String siteName) { return "Test"; } - + } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/FreemarkerPagedSearchController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/FreemarkerPagedSearchController.java index 780640d54..ee6d8d31b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/FreemarkerPagedSearchController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/FreemarkerPagedSearchController.java @@ -72,8 +72,8 @@ import edu.cornell.mannlib.vitro.webapp.search.lucene.SimpleLuceneHighlighter; import edu.cornell.mannlib.vitro.webapp.utils.FlagMathUtils; import edu.cornell.mannlib.vitro.webapp.utils.Html2Text; import edu.cornell.mannlib.vitro.webapp.utils.StringUtils; -import edu.cornell.mannlib.vitro.webapp.web.templatemodels.IndividualTemplateModel; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.LinkTemplateModel; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual.IndividualTemplateModel; /** * PagedSearchController is the new search controller that interacts diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/User.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/User.java new file mode 100644 index 000000000..fec37139c --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/User.java @@ -0,0 +1,71 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.web.templatemodels; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import edu.cornell.mannlib.vedit.beans.LoginStatusBean; +import edu.cornell.mannlib.vitro.webapp.beans.ApplicationBean; +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.controller.freemarker.RevisionInfoController; +import edu.cornell.mannlib.vitro.webapp.controller.freemarker.SiteAdminController; + +public class User extends BaseTemplateModel { + + private static final Log log = LogFactory.getLog(User.class); + + private enum Access { + SITE_ADMIN(SiteAdminController.staticRequiredLoginLevel()), + REVISION_INFO(RevisionInfoController.staticRequiredLoginLevel()), + FILTER_SECURITY(LoginStatusBean.EDITOR); + + private final int requiredLoginLevel; + + Access(int requiredLoginLevel) { + this.requiredLoginLevel = requiredLoginLevel; + } + + int requiredLoginLevel() { + return this.requiredLoginLevel; + } + } + + private LoginStatusBean loginBean = null; + private VitroRequest vreq = null; + + public User(VitroRequest vreq) { + this.vreq = vreq; + loginBean = LoginStatusBean.getBean(vreq); + } + + public boolean isLoggedIn() { + return loginBean.isLoggedIn(); + } + + public String getLoginName() { + return loginBean.getUsername(); + } + + public boolean getHasSiteAdminAccess() { + return loginBean.isLoggedInAtLeast(Access.SITE_ADMIN.requiredLoginLevel()); + } + + public boolean getHasRevisionInfoAccess() { + return loginBean.isLoggedInAtLeast(Access.REVISION_INFO.requiredLoginLevel()); + } + + public boolean getShowFlag1SearchField() { + boolean showFlag1SearchField = false; + if (loginBean.isLoggedInAtLeast(Access.FILTER_SECURITY.requiredLoginLevel)) { + ApplicationBean appBean = vreq.getAppBean(); + if (appBean.isFlag1Active()) { + showFlag1SearchField = true; + } + } + return showFlag1SearchField; + } +} diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/IndividualTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java similarity index 90% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/IndividualTemplateModel.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java index e2abbeec6..cbd29ed56 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/IndividualTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java @@ -1,6 +1,6 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ -package edu.cornell.mannlib.vitro.webapp.web.templatemodels; +package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual; import java.util.ArrayList; import java.util.List; @@ -19,6 +19,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Route; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; import edu.cornell.mannlib.vitro.webapp.web.ViewFinder; import edu.cornell.mannlib.vitro.webapp.web.ViewFinder.ClassView; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel; public class IndividualTemplateModel extends BaseTemplateModel { @@ -30,13 +31,6 @@ public class IndividualTemplateModel extends BaseTemplateModel { protected VitroRequest vreq; protected UrlBuilder urlBuilder; - // private PropertyListTemplateModel propertyList; - - // RY The IndividualTemplateModel object needs access to the request object. - // The only other template model that does is MainMenu. We could provide an - // interface for RequestAware template models, but they still wouldn't share any code. - // If they both derive from a common RequestAwareTemplateModel class, we might be - // locking ourselves in too tightly to that class hierarchy. public IndividualTemplateModel(Individual individual, VitroRequest vreq) { this.individual = individual; this.vreq = vreq; @@ -150,6 +144,19 @@ public class IndividualTemplateModel extends BaseTemplateModel { return links; } + public static List getIndividualTemplateModelList(List individuals, VitroRequest vreq) { + List models = new ArrayList(individuals.size()); + for (Individual individual : individuals) { + models.add(new IndividualTemplateModel(individual, vreq)); + } + return models; + } + + public List getPropertyList() { + PropertyListBuilder propListBuilder = new PropertyListBuilder(individual, vreq); + return propListBuilder.getPropertyList(); + } + /* These methods simply forward to the Individual methods. It would be desirable to implement a scheme for proxying or delegation so that the methods don't need to be simply listed here. A Ruby-style method missing method would be ideal. @@ -189,19 +196,6 @@ public class IndividualTemplateModel extends BaseTemplateModel { return individual.getLocalName(); } - public static List getIndividualTemplateModelList(List individuals, VitroRequest vreq) { - List models = new ArrayList(individuals.size()); - for (Individual individual : individuals) { - models.add(new IndividualTemplateModel(individual, vreq)); - } - return models; - } - - private boolean isExternallyLinkedNamespace(String namespace,List externallyLinkedNamespaces) { - return externallyLinkedNamespaces.contains(namespace); - } - // public Map< > getPropertyList - // public Map< > getPropertyGroupList } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyListBuilder.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyListBuilder.java new file mode 100644 index 000000000..6aae3c3cc --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyListBuilder.java @@ -0,0 +1,83 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import edu.cornell.mannlib.vedit.beans.LoginStatusBean; +import edu.cornell.mannlib.vitro.webapp.beans.Individual; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; +import edu.cornell.mannlib.vitro.webapp.beans.Property; +import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup; +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.dao.PropertyGroupDao; +import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; +import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; +import edu.cornell.mannlib.vitro.webapp.filters.VitroRequestPrep; + +public class PropertyListBuilder { + + private static final Log log = LogFactory.getLog(PropertyListBuilder.class); + private static final int MAX_GROUP_DISPLAY_RANK = 99; + + // Don't include these properties in the list. + private static final Collection SUPPRESSED_OBJECT_PROPERTIES = Collections + .unmodifiableCollection(Arrays + .asList(new String[] { VitroVocabulary.IND_MAIN_IMAGE })); + + protected Individual subject; + protected VitroRequest vreq; + + PropertyListBuilder(Individual individual, VitroRequest vreq) { + this.subject = individual; + this.vreq = vreq; + } + + protected List getPropertyList() { + + // Determine whether we're editing or not. + // These tests may change once self-editing issues are straightened out. + boolean isSelfEditing = VitroRequestPrep.isSelfEditing(vreq); + boolean isCurator = LoginStatusBean.getBean(vreq).isLoggedInAtLeast(LoginStatusBean.CURATOR); + boolean isEditing = isSelfEditing || isCurator; + + // Determine whether to return a grouped or ungrouped property list. + // If the call specified ungrouped, use ungrouped. + // If the call specified grouped: + + WebappDaoFactory wdf = vreq.getWebappDaoFactory(); + PropertyGroupDao pgDao = wdf.getPropertyGroupDao(); + List groupsList = pgDao.getPublicGroups(false); // may be returned empty but not null + // Use ungrouped if no property groups are defined + + // If < 2 property groups are populated, we also want ungrouped, but we won't know that until we + // get the property list. + + + // Assemble the property list + List mergedPropertyList = new ArrayList(); + // First get the properties this entity actually has, presumably populated with statements + List objectPropertyList = subject.getObjectPropertyList(); + + for (ObjectProperty op : objectPropertyList) { + if (!SUPPRESSED_OBJECT_PROPERTIES.contains(op)) { + op.setEditLabel(op.getDomainPublic()); + mergedPropertyList.add(op); + }else{ + log.debug("suppressed " + op.getURI()); + } + } + + // If < 2 property groups populated, we want ungrouped. + // This can just be handled by not including a group, or using an "empty" group with no name. + + return null; + } +} diff --git a/webapp/web/templates/freemarker/body/individual/individual-properties.ftl b/webapp/web/templates/freemarker/body/individual/individual-properties.ftl index d04a2b35e..358d91a97 100644 --- a/webapp/web/templates/freemarker/body/individual/individual-properties.ftl +++ b/webapp/web/templates/freemarker/body/individual/individual-properties.ftl @@ -2,8 +2,6 @@ <#-- Template for property listing on individual profile page --> -<#if individual.propertyGroups??> - -<#elseif individual.properties??> - - \ No newline at end of file +<#-- +<#assign properties = individual.propertyList> +--> \ No newline at end of file diff --git a/webapp/web/templates/freemarker/body/individual/individual.ftl b/webapp/web/templates/freemarker/body/individual/individual.ftl index d8df4ded1..e19714bb4 100644 --- a/webapp/web/templates/freemarker/body/individual/individual.ftl +++ b/webapp/web/templates/freemarker/body/individual/individual.ftl @@ -71,9 +71,9 @@ - + <#include "individual-properties.ftl"> - + <#-- Keywords --> <#if individual.keywords?has_content>

Keywords: ${individual.keywordString}

diff --git a/webapp/web/templates/freemarker/page/partials/identity.ftl b/webapp/web/templates/freemarker/page/partials/identity.ftl index 217e24b27..516a5c04c 100644 --- a/webapp/web/templates/freemarker/page/partials/identity.ftl +++ b/webapp/web/templates/freemarker/page/partials/identity.ftl @@ -12,11 +12,13 @@
    <@l.firstLastList> - <#if loginName??> + <#if user.loggedIn>
  • - Logged in as ${loginName} (Log out) + Logged in as ${user.loginName} (Log out)
  • -
  • Site Admin
  • + <#if user.hasSiteAdminAccess> +
  • Site Admin
  • + <#else>
  • Log in
  • diff --git a/webapp/web/templates/freemarker/page/partials/search.ftl b/webapp/web/templates/freemarker/page/partials/search.ftl index f61d64c33..ee3e410e8 100644 --- a/webapp/web/templates/freemarker/page/partials/search.ftl +++ b/webapp/web/templates/freemarker/page/partials/search.ftl @@ -4,9 +4,9 @@
    - <#if showFlag1SearchField??> + <#if user.showFlag1SearchField> <#else> diff --git a/webapp/web/templates/freemarker/page/partials/version.ftl b/webapp/web/templates/freemarker/page/partials/version.ftl index 713e34f39..4821efe65 100644 --- a/webapp/web/templates/freemarker/page/partials/version.ftl +++ b/webapp/web/templates/freemarker/page/partials/version.ftl @@ -2,9 +2,9 @@ <#-- Template for version/revision information --> -<#-- Only show version info if user is logged in --> -<#if loginName??> -
    +<#-- Only show version info if user has access --> +<#if user.hasRevisionInfoAccess> + \ No newline at end of file diff --git a/webapp/web/templates/freemarker/widgets/widget-login.ftl b/webapp/web/templates/freemarker/widgets/widget-login.ftl index 25a7830fc..e298e7fff 100644 --- a/webapp/web/templates/freemarker/widgets/widget-login.ftl +++ b/webapp/web/templates/freemarker/widgets/widget-login.ftl @@ -3,9 +3,9 @@ <#-- Login widget --> <#macro assets> - <#-- RY This test should be replaced by controller logic which doesn't display any assets if the user is logged in. - See NIHVIVO-1357. This test does nothing, since loginName has not been put into the data model. - <#if ! loginName?has_content> --> + <#-- RY This test should be replaced by widget controller logic which doesn't display any assets if the user is logged in. + See NIHVIVO-1357. This test does nothing, since user has not been put into the data model. + <#if ! user.loggedIn> --> ${stylesheets.add("/css/login.css")} ${scripts.add("/js/jquery.js", "/js/login/loginUtils.js")} <#-- ${headScripts.add("")} -->