Added ajax request indicator and some minor fixes.
[fa-stable.git] / includes / ajax.inc
index 5625fc900c3ba1c3bbda674de07d90f70cf26e30..ce8c965519e3ab62f0429649e8f0d50fe4ca4808 100644 (file)
@@ -25,11 +25,17 @@ class Ajax extends JsHttpRequest {
        //
        function redirect($url) {
            if(in_ajax()) {
-                 $this->_addCommand(true, array('n'=>'rd'),$url);
+                       $this->_addCommand(true, array('n'=>'rd'),$url);
                  $this->run();
            }
        }
        //
+       // Popup window (target=_blank)
+       //
+       function popup($url) {
+                 $this->_addCommand(true, array('n'=>'pu'),$url);
+       }
+       //
        // Adds an executable Javascript code.
        //
        function addScript($trigger, $sJS)
@@ -106,17 +112,26 @@ class Ajax extends JsHttpRequest {
 
                // remove not active commands
                foreach ($this->aCommands as $idx => $com) {
-               // display_error( $idx.':'.var_dump($com));
 // If we should reload whole page content ignore all commands but the update.
 // This is page repost equivalent, although header and footer are not reloaded.
+                 if ($com['why'] !== true && !isset($this->triggers[$com['why']])) {
+                       unset($this->aCommands[$idx]);
+//                     display_error('unset '.$com['t']);
+                 }
+                 else
                  if($com['n'] == 'up' && $com['t'] == '_page_body') {
-                         $this->aCommands = array($com);
+                         $cmds = array($com);
+                         foreach( $this->aCommands as $k=> $cmd) {
+                               if ($cmd['n'] == 'fc') {        // save focus
+                                       $cmds[] = $cmd; break;
+                               }
+                         }
+                         $this->aCommands = $cmds;
                          break;
                  }
-                 else
-                 if ($com['why'] !== true && !isset($this->triggers[$com['why']]))
-                       unset($this->aCommands[$idx]);
                }
+//             display_error('Activate:'.htmlentities(print_r($this->triggers, true)));
+//             display_error('Commands :'.htmlentities(print_r($this->aCommands, true)));
            $GLOBALS['_RESULT'] = $this->aCommands;
 //         exit();
        }