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

Reply via email to