details: /erp/devel/pi/rev/641d3ed2b979
changeset: 11452:641d3ed2b979
user: Gorka Ion Damián <gorkaion.damian <at> openbravo.com>
date: Mon Apr 04 13:40:30 2011 +0200
summary: Fixed issue 16344.Properly filter available available widgets on
admin mode for roles.
diffstat:
modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
| 16 +++++++--
modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoComponent.java
| 16 +++++++--
modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
| 7 +++-
3 files changed, 30 insertions(+), 9 deletions(-)
diffs (118 lines):
diff -r ce5d42164403 -r 641d3ed2b979
modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
---
a/modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
Mon Apr 04 13:30:27 2011 +0200
+++
b/modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoActionHandler.java
Mon Apr 04 13:40:30 2011 +0200
@@ -101,14 +101,22 @@
} else if (strEventType.equals(RELOAD_WIDGETS)) {
// Add available classes
- addAvailableWidgetClasses(o);
+ String roleId = null;
+ if (isAdminMode && availableAtLevel.equals("ROLE")) {
+ roleId = availableAtLevelValue[0];
+ }
+ addAvailableWidgetClasses(o, roleId);
// Add widget instances
widgets = new JSONArray();
reloadWidgets(isAdminMode, message, widgets, availableAtLevel,
availableAtLevelValue);
o.put("widgets", widgets);
} else if (strEventType.equals(GET_AVAILABLE_WIDGET_CLASSES)) {
- addAvailableWidgetClasses(o);
+ String roleId = null;
+ if (isAdminMode && availableAtLevel.equals("ROLE")) {
+ roleId = availableAtLevelValue[0];
+ }
+ addAvailableWidgetClasses(o, roleId);
} else if (strEventType.equals(GET_COMMUNITY_BRANDING_URL)) {
o.put("url", Utility.getCommunityBrandingUrl("MyOB"));
} else {
@@ -170,10 +178,10 @@
}
- private void addAvailableWidgetClasses(JSONObject o) {
+ private void addAvailableWidgetClasses(JSONObject o, String roleId) {
MyOpenbravoComponent component =
weldUtils.getInstance(MyOpenbravoComponent.class);
try {
- List<String> availableClasses = component.getAvailableWidgetClasses();
+ List<String> availableClasses =
component.getAvailableWidgetClasses(roleId);
o.put("availableWidgetClasses", availableClasses);
} catch (Exception e) {
log.error("Error retreiving widget classes", e);
diff -r ce5d42164403 -r 641d3ed2b979
modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoComponent.java
---
a/modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoComponent.java
Mon Apr 04 13:30:27 2011 +0200
+++
b/modules/org.openbravo.client.myob/src/org/openbravo/client/myob/MyOpenbravoComponent.java
Mon Apr 04 13:40:30 2011 +0200
@@ -30,6 +30,7 @@
import javax.inject.Inject;
+import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
@@ -85,6 +86,10 @@
}
public List<String> getAvailableWidgetClasses() throws Exception {
+ return getAvailableWidgetClasses(null);
+ }
+
+ public List<String> getAvailableWidgetClasses(String roleId) throws
Exception {
OBContext.setAdminMode();
try {
if (widgetClassDefinitions != null) {
@@ -97,7 +102,7 @@
final OBQuery<WidgetClass> widgetClassesQry =
OBDal.getInstance().createQuery(
WidgetClass.class, WidgetClass.PROPERTY_SUPERCLASS + " is false");
for (WidgetClass widgetClass : widgetClassesQry.list()) {
- if (isAccessible(widgetClass)) {
+ if (isAccessible(widgetClass, roleId)) {
final WidgetProvider widgetProvider =
myOBUtils.getWidgetProvider(widgetClass);
if (!widgetProvider.validate()) {
continue;
@@ -233,7 +238,7 @@
log.debug("Defined User widgets:" + userWidgets.size());
// filter on the basis of role access
for (WidgetInstance widget : userWidgets) {
- if (isAccessible(widget.getWidgetClass())) {
+ if (isAccessible(widget.getWidgetClass(), null)) {
widgets.add(widget);
}
}
@@ -290,11 +295,14 @@
}
}
- private boolean isAccessible(WidgetClass widgetClass) {
+ private boolean isAccessible(WidgetClass widgetClass, String _roleId) {
if (widgetClass.isAllowAnonymousAccess()) {
return true;
}
- final String roleId = OBContext.getOBContext().getRole().getId();
+ String roleId = _roleId;
+ if (StringUtils.isEmpty(roleId)) {
+ roleId = OBContext.getOBContext().getRole().getId();
+ }
for (WidgetClassAccess widgetClassAccess :
widgetClass.getOBKMOWidgetClassAccessList()) {
if (DalUtil.getId(widgetClassAccess.getRole()).equals(roleId)) {
return true;
diff -r ce5d42164403 -r 641d3ed2b979
modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
---
a/modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
Mon Apr 04 13:30:27 2011 +0200
+++
b/modules/org.openbravo.client.myob/web/org.openbravo.client.myob/js/ob-myopenbravo.js
Mon Apr 04 13:40:30 2011 +0200
@@ -869,10 +869,15 @@
'eventType': 'GET_AVAILABLE_WIDGET_CLASSES',
'widgets': [],
'context': {
- 'adminMode': false
+ 'adminMode': OB.MyOB.adminMode
}
};
+ if (OB.MyOB.adminMode) {
+ post.context.availableAtLevel = OB.MyOB.adminLevel.toUpperCase();
+ post.context.availableAtLevelValue = OB.MyOB.adminLevelValue;
+ }
+
this.Super('initWidget', arguments);
OB.RemoteCallManager.call(this.actionHandler, post, {},
function(rpcResponse, data, rpcRequest){
------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself;
WebMatrix provides all the features you need to develop and
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits