예제 #1
0
파일: uploader.php 프로젝트: glensc/cjax
 /**
  * Right handler routed
  * 
  * handles chain call $ajax->someApi->uploader();
  * 
  * @param unknown_type $value
  */
 function callbackHandler($sender, $receiver, $setting)
 {
     switch ($setting) {
         case 'postCallback':
             $event = CoreEvents::$cache[$receiver->id];
             $callback = CoreEvents::$cache[$sender->id];
             $event['postCallback'][$sender->id] = $callback;
             $sender->delete();
             $callbacks = CoreEvents::processScache($event['postCallback']);
             $callbacks = CoreEvents::mkArray($callbacks, 'json', true);
             $event['postCallback'] = "<cjax>{$callbacks}</cjax>";
             CoreEvents::$cache[$receiver->id] = $event;
             CoreEvents::simpleCommit();
             break;
     }
 }
예제 #2
0
 function __set($setting, $value)
 {
     if (is_a($value, __CLASS__) || is_a($value, 'plugin')) {
         if (is_a($value, 'plugin')) {
             if (method_exists($value, 'callbackHandler')) {
                 if ($value->callbackHandler($value->xml, $this, $setting)) {
                     return $value;
                 }
             }
         }
         switch ($setting) {
             case 'waitFor':
                 $value = $value->id;
                 break;
             case 'callback':
                 if (isset(CoreEvents::$callbacks[$value->id])) {
                     $cb = CoreEvents::$callbacks[$value->id];
                     $cb = CoreEvents::processScache($cb);
                     //die("s<Pre>".print_r($cb,1));
                     CoreEvents::$cache[$value->id]['callback'] = CoreEvents::mkArray($cb, 'json', true);
                     CoreEvents::$callbacks[$this->id][$value->id] = CoreEvents::$cache[$value->id];
                     $value->delete();
                 } else {
                     CoreEvents::$callbacks[$this->id][$value->id] = CoreEvents::$cache[$value->id];
                     $value->delete();
                 }
                 //die('sss<pre>'.print_r(CoreEvents::$cache,1) . "ddd<pre".print_r(CoreEvents::$callbacks,1));
                 return;
                 break;
             default:
                 //nothing to handle
                 return;
         }
     }
     $event = CoreEvents::$cache[$this->id];
     $event[$setting] = $value;
     CoreEvents::$cache[$this->id] = $event;
     if ($setting == 'waitFor') {
         CoreEvents::$cache[$value]['onwait'][$this->id] = $this->xml();
         $this->delete();
     }
     CoreEvents::simpleCommit();
 }
예제 #3
0
파일: core.class.php 프로젝트: glensc/cjax
 function callbacks($cache, $test = false)
 {
     if (CoreEvents::$callbacks) {
         foreach (CoreEvents::$callbacks as $k => $v) {
             if (!$test) {
                 $cb = CoreEvents::processScache($v);
             } else {
                 $cb = CoreEvents::processScache($v);
             }
             if (!isset($cache[$k])) {
                 $v[$k]['callback'] = CoreEvents::mkArray($cb, 'json', true);
             } else {
                 if (!$test) {
                     $cache[$k]['callback'] = CoreEvents::mkArray($cb, 'json', true);
                 } else {
                     $cache[$k]['callback'] = $cb;
                 }
             }
         }
     }
     return $cache;
 }
예제 #4
0
파일: cjax.class.php 프로젝트: glensc/cjax
 /**
  * Bind events to elements
  * 
  * @param $selector
  * @param $actions
  * @param $event
  */
 function Exec($selector, $actions, $event = "click")
 {
     if (!self::getCache()) {
         return false;
     }
     if (is_array($selector)) {
         $selector = implode('|', $selector);
     }
     if ($event) {
         if (substr($event, 0, 2) != "on" && $event != 'click') {
             $event = "on{$event}";
         }
         $this->event = $event;
     }
     $_actions = array();
     if ($actions && is_array($actions)) {
         $cache = CoreEvents::$cache;
         foreach ($actions as $k => $v) {
             if (is_object($v) && (is_a($v, 'xmlItem') || is_a($v, 'plugin'))) {
                 if (is_a($v, 'plugin')) {
                     $v->element_id = $selector;
                     $v->xml->element_id = $selector;
                     if (method_exists($v, 'onEvent')) {
                         call_user_method('onEvent', $v, $selector);
                     }
                 }
                 $_actions[$v->id] = $v->xml();
                 if (isset(CoreEvents::$callbacks[$v->id]) && CoreEvents::$callbacks[$v->id]) {
                     $_actions[$v->id]['callback'] = CoreEvents::processScache(CoreEvents::$callbacks[$v->id]);
                     $_actions[$v->id]['callback'] = CoreEvents::mkArray($v[$v->id], 'json', true);
                 }
                 $v->delete();
             } else {
                 if (is_object($v)) {
                     //some functions return the ajax object?
                     continue;
                 }
                 $_actions[$v] = CoreEvents::$cache[$v];
                 unset(CoreEvents::$cache[$v]);
             }
         }
         return $this->AddEventTo($selector, $_actions, $event);
     }
     if (is_a($actions, 'xmlItem') || is_a($actions, 'plugin')) {
         if (is_a($actions, 'plugin')) {
             $actions->element_id = $selector;
             $actions->xml->element_id = $selector;
             if (method_exists($actions, 'onEvent')) {
                 call_user_method('onEvent', $actions, $selector);
             }
         }
         $item = $actions->xml();
         $item['event'] = $event;
         if (isset(CoreEvents::$callbacks[$actions->id]) && CoreEvents::$callbacks[$actions->id]) {
             $item['callback'] = CoreEvents::processScache(CoreEvents::$callbacks[$actions->id]);
             $item['callback'] = CoreEvents::mkArray($item['callback'], 'json', true);
         }
         $actions->delete();
         return $this->AddEventTo($selector, array($actions->id => $item), $event);
     } else {
         $_actions = CoreEvents::$cache[$actions];
         $_actions['event'] = $event;
         $this->removeLastCache(1);
         return $this->AddEventTo($selector, array($actions => $_actions), $event);
     }
 }