From b7ec17856e9bf8363d332ba20df28b3ef65cb38a Mon Sep 17 00:00:00 2001 From: j2blake Date: Sun, 30 Oct 2011 16:54:23 +0000 Subject: [PATCH] NIHVIVO-2343 Remove hardcoded kluges for base URL, matching property and AJAX URL. Only show the proxy panel if the user has a profile and is authorized to manage the proxy. --- .../controller/accounts/UserAccountsPage.java | 1 + .../accounts/user/UserAccountsMyAccountPage.java | 16 ++++++++++++++++ .../web/js/account/accountProxyProxiesPanel.js | 13 +++++-------- .../body/accounts/userAccounts-myAccount.ftl | 4 +++- .../accounts/userAccounts-myProxiesPanel.ftl | 8 ++++++++ 5 files changed, 33 insertions(+), 9 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsPage.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsPage.java index cd36a194f..f88b7c875 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsPage.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsPage.java @@ -181,6 +181,7 @@ public abstract class UserAccountsPage { map.put("firstTimeExternal", UrlBuilder.getUrl("/accounts/firstTimeExternal")); map.put("accountsAjax", UrlBuilder.getUrl("/accountsAjax")); + map.put("sparqlQueryAjax", UrlBuilder.getUrl("/ajax/sparqlQuery")); return map; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java index 2dbdce066..2d53610f4 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java @@ -13,6 +13,8 @@ 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.auth.policy.PolicyHelper; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.ManageOwnProxies; import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.SelfEditingConfiguration; import edu.cornell.mannlib.vitro.webapp.beans.UserAccount; @@ -146,6 +148,11 @@ public class UserAccountsMyAccountPage extends UserAccountsPage { } body.put("formUrls", buildUrlsMap()); + // Could I do this without exposing this mechanism? But how to search + // for an associated profile in AJAX? + body.put("matchingProperty", SelfEditingConfiguration.getBean(vreq) + .getMatchingPropertyUri()); + if (userAccount.isExternalAuthOnly()) { body.put("externalAuthOnly", Boolean.TRUE); } @@ -155,6 +162,9 @@ public class UserAccountsMyAccountPage extends UserAccountsPage { if (!confirmationCode.isEmpty()) { body.put(confirmationCode, Boolean.TRUE); } + if (isProxyPanelAuthorized()) { + body.put("showProxyPanel", Boolean.TRUE); + } strategy.addMoreBodyValues(body); @@ -180,6 +190,12 @@ public class UserAccountsMyAccountPage extends UserAccountsPage { confirmationCode = strategy.getConfirmationCode(); } + boolean isProxyPanelAuthorized() { + return PolicyHelper + .isAuthorizedForActions(vreq, new ManageOwnProxies()) + && (getProfilePage(userAccount) != null); + } + boolean isExternalAuthOnly() { return (userAccount != null) && userAccount.isExternalAuthOnly(); } diff --git a/webapp/web/js/account/accountProxyProxiesPanel.js b/webapp/web/js/account/accountProxyProxiesPanel.js index 1f099ac4e..5807bf1d1 100644 --- a/webapp/web/js/account/accountProxyProxiesPanel.js +++ b/webapp/web/js/account/accountProxyProxiesPanel.js @@ -1,10 +1,6 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ function proxyProxiesPanel(p) { - var sparqlQueryUrl = '../ajax/sparqlQuery'; - var matchingProperty = "http://vivoweb.org/ontology/core#scopusId" - var urlContext = 'http://localhost:8080/vivo' - var query = "" + "PREFIX fn: \n" + "PREFIX auth: \n" @@ -107,10 +103,11 @@ function proxyProxiesPanel(p) { this.getAdditionalInfo = function(info, externalAuthId) { $.ajax({ - url: sparqlQueryUrl, + url: proxyMechanism.sparqlQueryUrl, dataType: 'json', data: { - query: moreInfoQuery.replace("%matchingProperty%", matchingProperty).replace("%externalAuthId%", externalAuthId) + query: moreInfoQuery.replace("%matchingProperty%", proxyMechanism.matchingProperty) + .replace("%externalAuthId%", externalAuthId) }, complete: function(xhr, status) { var results = $.parseJSON(xhr.responseText); @@ -120,7 +117,7 @@ function proxyProxiesPanel(p) { info.classLabel = parsed[0].classLabel; } if ("imageUrl" in parsed[0]) { - info.imageUrl = urlContext + parsed[0].imageUrl; + info.imageUrl = proxyMechanism.baseUrl + parsed[0].imageUrl; } self.displayProxyData(); } @@ -153,7 +150,7 @@ function proxyProxiesPanel(p) { var parms = { query: query, model: "userAccounts", - url: sparqlQueryUrl + url: proxyMechanism.sparqlQueryUrl }; var reportSearchStatus = new searchStatusField(this.searchStatusField, 3).setText; this.addAutoCompleteField.autocomplete(new proxyAutocomplete(parms, this.getProxyInfos, this.addProxyInfo, reportSearchStatus)); diff --git a/webapp/web/templates/freemarker/body/accounts/userAccounts-myAccount.ftl b/webapp/web/templates/freemarker/body/accounts/userAccounts-myAccount.ftl index 3cca6b5f4..f28170bcc 100644 --- a/webapp/web/templates/freemarker/body/accounts/userAccounts-myAccount.ftl +++ b/webapp/web/templates/freemarker/body/accounts/userAccounts-myAccount.ftl @@ -59,7 +59,9 @@
- <#include "userAccounts-myProxiesPanel.ftl"> + <#if showProxyPanel?? > + <#include "userAccounts-myProxiesPanel.ftl"> + diff --git a/webapp/web/templates/freemarker/body/accounts/userAccounts-myProxiesPanel.ftl b/webapp/web/templates/freemarker/body/accounts/userAccounts-myProxiesPanel.ftl index 0a8cf0179..6580b9e99 100644 --- a/webapp/web/templates/freemarker/body/accounts/userAccounts-myProxiesPanel.ftl +++ b/webapp/web/templates/freemarker/body/accounts/userAccounts-myProxiesPanel.ftl @@ -52,6 +52,14 @@ ${stylesheets.add(' +var proxyMechanism = { + baseUrl: '${urls.base}', + sparqlQueryUrl: '${formUrls.sparqlQueryAjax}', + matchingProperty: '${matchingProperty}' +}; + + ${scripts.add('', '', '',