details:   /erp/devel/pi/rev/1976da320b9b
changeset: 9995:1976da320b9b
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Thu Jan 20 16:30:27 2011 +0100
summary:   [process] Display logic for buttons in grid mode takes into account 
session vars

details:   /erp/devel/pi/rev/71347366bee5
changeset: 9996:71347366bee5
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Thu Jan 20 16:50:03 2011 +0100
summary:   [process] Do not call FIC to calculate session variables if no 
button has session variables logic

diffstat:

 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
 |   6 +-
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
        |  24 ++++-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
       |   4 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
             |  50 ++++++++-
 4 files changed, 72 insertions(+), 12 deletions(-)

diffs (187 lines):

diff -r 4629b4fcf93e -r 71347366bee5 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
        Thu Jan 20 16:25:50 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
        Thu Jan 20 16:50:03 2011 +0100
@@ -67,20 +67,22 @@
        <#if field.showIf != "">
        , displayIf: function(item, value, form, currentValues) {
          currentValues = currentValues || form.view.getCurrentValues();
-         var context = form.view.getContextInfo(false, true);
+         var context = form.view.getContextInfo(false, true, true);
          return context && (${field.showIf});
        }
        </#if>
        <#if field.readOnlyIf != "">
        , readOnlyIf: function(item, value, form, currentValues) {
          currentValues = currentValues || form.view.getCurrentValues();
-         var context = form.view.getContextInfo(false, true);
+         var context = form.view.getContextInfo(false, true, true);
          return context && (${field.readOnlyIf});
        }
        </#if>
       }<#if field_has_next>,</#if>
     </#list>],
     
+    buttonsHaveSessionLogic: ${tabComponent.buttonSessionLogic?string},
+    
     iconToolbarButtons: [
     <#list tabComponent.iconButtons as button>
       {
diff -r 4629b4fcf93e -r 71347366bee5 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
       Thu Jan 20 16:25:50 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
       Thu Jan 20 16:50:03 2011 +0100
@@ -62,8 +62,8 @@
   private List<ButtonField> buttonFields = null;
   private List<IconButton> iconButtons = null;
   private Field keyField;
-
   private Column keyColumn;
+  private boolean buttonSessionLogic;
 
   protected Template getComponentTemplate() {
     return OBDal.getInstance().get(Template.class, TEMPLATE_ID);
@@ -90,7 +90,11 @@
         if (!(ApplicationUtils.isUIButton(fld))) {
           continue;
         }
-        buttonFields.add(new ButtonField(fld));
+        ButtonField btn = new ButtonField(fld);
+        buttonFields.add(btn);
+        if (btn.sessionLogic) {
+          buttonSessionLogic = true;
+        }
       }
     }
     return buttonFields;
@@ -276,6 +280,15 @@
     return tab.getWindow().getId();
   }
 
+  public boolean isButtonSessionLogic() {
+    if (buttonFields == null) {
+      // Generate buttons fields if they haven't been already generated, to 
calculate
+      // buttonSessionLogic
+      getButtonFields();
+    }
+    return buttonSessionLogic;
+  }
+
   public class FieldProperty {
     private String columnName;
     private String dbColumnName;
@@ -330,6 +343,7 @@
     private boolean autosave;
     private String showIf = "";
     private String readOnlyIf = "";
+    private boolean sessionLogic = false;
 
     public ButtonField(Field fld) {
       id = fld.getId();
@@ -385,6 +399,9 @@
         final DynamicExpressionParser parser = new 
DynamicExpressionParser(fld.getDisplayLogic(),
             tab);
         showIf = parser.getJSExpression();
+        if (parser.getSessionAttributes().size() > 0) {
+          sessionLogic = true;
+        }
       }
 
       // Read only logic
@@ -392,6 +409,9 @@
         final DynamicExpressionParser parser = new 
DynamicExpressionParser(fld.getColumn()
             .getReadOnlyLogic(), tab);
         readOnlyIf = parser.getJSExpression();
+        if (parser.getSessionAttributes().size() > 0) {
+          sessionLogic = true;
+        }
       }
     }
 
diff -r 4629b4fcf93e -r 71347366bee5 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
      Thu Jan 20 16:25:50 2011 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
      Thu Jan 20 16:50:03 2011 +0100
@@ -1379,7 +1379,7 @@
   
   //++++++++++++++++++ Reading context ++++++++++++++++++++++++++++++
   
-  getContextInfo: function(onlySessionProperties, classicMode){
+  getContextInfo: function(onlySessionProperties, classicMode, 
forceSettingContextVars){
     var contextInfo = {}, addProperty;
     // if classicmode is undefined then both classic and new props are used
     var classicModeUndefined = (typeof classicMode === 'undefined');
@@ -1437,7 +1437,7 @@
         }
       }
     }
-    if (this.isShowingForm) {
+    if (this.isShowingForm || forceSettingContextVars) {
       isc.addProperties(contextInfo, this.viewForm.auxInputs);
       isc.addProperties(contextInfo, this.viewForm.hiddenInputs);
       isc.addProperties(contextInfo, this.viewForm.sessionAttributes);
diff -r 4629b4fcf93e -r 71347366bee5 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
    Thu Jan 20 16:25:50 2011 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
    Thu Jan 20 16:50:03 2011 +0100
@@ -562,20 +562,58 @@
   // Refreshes all the custom buttons in the toolbar based on current record 
selection
   //
   refreshCustomButtons: function(){
+    function doRefresh(buttons, currentValues, hideAllButtons){
+      for (var i = 0; i < buttons.length; i++) {
+        if (buttons[i].refresh) {
+          buttons[i].refresh(currentValues, hideAllButtons);
+        }
+      }
+    }
+    
     var buttons = this.getRightMembers();
     var numOfSelRecords = 0; 
+    
+    
     if (this.view.viewGrid.getSelectedRecords()) {
       numOfSelRecords = this.view.viewGrid.getSelectedRecords().length;
     }
     var isNew = this.view.viewForm.isNew;
     var hideAllButtons = !isNew && (!this.view.viewGrid.getSelectedRecords() 
|| this.view.viewGrid.getSelectedRecords().length !== 1);
+    
+    
     var currentValues = this.view.getCurrentValues();
-    
-    for (var i = 0; i < buttons.length; i++) {
-      if (buttons[i].refresh) {
-        buttons[i].refresh(currentValues, hideAllButtons);
-      }
-    }
+    if (this.buttonsHaveSessionLogic && !this.view.isShowingForm && 
!hideAllButtons && !isNew) {
+      var formView = this.view.viewForm;
+      // Call FIC to obtain possible session attributes and set them in form
+      requestParams = {
+          MODE: 'EDIT',
+          PARENT_ID: this.view.getParentId(),
+          TAB_ID: this.view.tabId,
+          ROW_ID: currentValues.id
+        };
+        
+        
OB.RemoteCallManager.call('org.openbravo.client.application.window.FormInitializationComponent',
 {}, requestParams, function(response, data, request){
+         var sessionAttributes = data.sessionAttributes, auxInputs = 
data.auxiliaryInputValues;
+         if (sessionAttributes) {
+           formView.sessionAttributes = sessionAttributes;
+         }
+         
+         if (auxInputs) {
+           this.auxInputs = {};
+           for (var prop in auxInputs) {
+             if (auxInputs.hasOwnProperty(prop)) {
+               formView.setValue(prop, auxInputs[prop].value);
+               formView.auxInputs[prop] = auxInputs[prop].value;
+             }
+           }
+         }
+         
+         doRefresh(buttons, currentValues, false);
+        });
+    } else {
+      currentValues = this.view.getCurrentValues();
+      doRefresh(buttons, currentValues, hideAllButtons);
+    } 
   },
   
   addMembers: 'null',

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand 
malware threats, the impact they can have on your business, and how you 
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to