You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2012/09/17 13:28:08 UTC

svn commit: r1386560 - in /myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script: tobago-menu.js tobago.js

Author: lofwyr
Date: Mon Sep 17 11:28:08 2012
New Revision: 1386560

URL: http://svn.apache.org/viewvc?rev=1386560&view=rev
Log:
TOBAGO-1197: Tobago.registerListener() needs to support an "order" parameter

Modified:
    myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js
    myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js?rev=1386560&r1=1386559&r2=1386560&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js Mon Sep 17 11:28:08 2012
@@ -315,5 +315,5 @@ jQuery.tobagoMenuParent = function(eleme
   });
 })(jQuery);
 
-Tobago.registerListener(Tobago.Menu.init, Tobago.Phase.DOCUMENT_READY);
-Tobago.registerListener(Tobago.Menu.init, Tobago.Phase.AFTER_UPDATE);
+Tobago.registerListener(Tobago.Menu.init, Tobago.Phase.DOCUMENT_READY, Tobago.Phase.Order.LATE);
+Tobago.registerListener(Tobago.Menu.init, Tobago.Phase.AFTER_UPDATE, Tobago.Phase.Order.LATE);

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js?rev=1386560&r1=1386559&r2=1386560&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js Mon Sep 17 11:28:08 2012
@@ -235,27 +235,41 @@ var Tobago = {
   initMarker: false,
 
   listeners: {
-    documentReady: [],
-    windowLoad: [],
-    beforeSubmit: [],
-    afterUpdate: []
+    documentReady: [[], [], []],
+    windowLoad: [[], [], []],
+    beforeSubmit: [[], [], []],
+    afterUpdate: [[], [], []]
   },
 
   // -------- Functions -------------------------------------------------------
 
-  registerListener: function(listener, phase) {
+  /**
+   * Register a function to be excecuted on certain events.
+   * @param listener Function to be executed.
+   * @param phase The phase when code should be excecuted (e. g. Tobago.Phase.DOCUMENT_READY).
+   * @param order An optinal order to sort function they depent on others (default: Tobago.Phase.Order.NORMAL).
+   */
+  registerListener: function(listener, phase, order) {
+
+    if (order == undefined) {
+      order = Tobago.Phase.Order.NORMAL;
+    }
 
+    var phaseMap;
     if (Tobago.Phase.DOCUMENT_READY == phase) {
-      Tobago.listeners.documentReady.push(listener);
+      phaseMap = Tobago.listeners.documentReady;
     } else if (Tobago.Phase.WINDOW_LOAD == phase) {
-      Tobago.listeners.windowLoad.push(listener);
+      phaseMap = Tobago.listeners.windowLoad;
     } else if (Tobago.Phase.BEFORE_SUBMIT == phase) {
-      Tobago.listeners.beforeSubmit.push(listener);
+      phaseMap = Tobago.listeners.beforeSubmit;
     } else if (Tobago.Phase.AFTER_UPDATE == phase) {
-      Tobago.listeners.afterUpdate.push(listener);
+      phaseMap = Tobago.listeners.afterUpdate;
     } else {
       LOG.error("Unknown phase: " + phase); // @DEV_ONLY
+      return;
     }
+
+    phaseMap[order].push(listener);
   },
 
   /**
@@ -286,8 +300,11 @@ var Tobago = {
 
     this.addBindEventListener(window, 'unload', this, 'onUnload');
 
-    for (var i = 0; i < Tobago.listeners.documentReady.length; i++) {
-      Tobago.listeners.documentReady[i]();
+    for (var order = 0; order < Tobago.listeners.documentReady.length; order++) {
+      var list = Tobago.listeners.documentReady[order];
+      for (var i = 0; i < list.length; i++) {
+        list[i]();
+      }
     }
 
     if (TbgTimer.endBody) { // @DEV_ONLY
@@ -338,10 +355,13 @@ var Tobago = {
 
   onSubmit: function() {
     var result = true; // Do not continue if any function returns false
-    for (var i = 0; i < Tobago.listeners.beforeSubmit.length; i++) {
-      result = Tobago.listeners.beforeSubmit[i]();
-      if (result == false) {
-        break;
+    for (var order = 0; order < Tobago.listeners.beforeSubmit.length; order++) {
+      var list = Tobago.listeners.beforeSubmit[order];
+      for (var i = 0; i < list.length; i++) {
+        result = list[i]();
+        if (result == false) {
+          break;
+        }
       }
     }
     if (result != false && jQuery.isFunction(Tobago.applicationOnsubmit)) {
@@ -1617,8 +1637,11 @@ jQuery(document).ready(function() {
 });
 
 jQuery(window).load(function() {
-  for (var i = 0; i < Tobago.listeners.windowLoad.length; i++) {
-    Tobago.listeners.windowLoad[i]();
+  for (var order = 0; order < Tobago.listeners.windowLoad.length; order++) {
+    var list = Tobago.listeners.windowLoad[order];
+    for (var i = 0; i < list.length; i++) {
+      list[i]();
+    }
   }
 });
 
@@ -1630,7 +1653,13 @@ Tobago.Phase = {
   /** before sending a normal submit action (TBD: also AJAX?) */
   BEFORE_SUBMIT:{},
   /** after an AJAX call */
-  AFTER_UPDATE:{}
+  AFTER_UPDATE:{},
+
+  Order:{
+    EARLY:0,
+    NORMAL:1,
+    LATE:2
+  }
 };
 
 Tobago.Config = {
@@ -2275,8 +2304,11 @@ Tobago.Updater = {
           }
           if (data.html.length > 0) {
 
-            for (var i = 0; i < Tobago.listeners.afterUpdate.length; i++) {
-              Tobago.listeners.afterUpdate[i](newElement);
+            for (var order = 0; order < Tobago.listeners.afterUpdate.length; order++) {
+              var list = Tobago.listeners.afterUpdate[order];
+              for (var i = 0; i < list.length; i++) {
+                list[i](newElement);
+              }
             }
           }
         } catch (e) {