예제 #1
0
    function renderJavascriptStubs()
    {
        $toret = '
			<script type="text/javascript">' . "\n";
        $toret .= '<!--' . "\n";
        if (!isset($GLOBALS['stub_loader'])) {
            $toret .= '
				var StubFilesLoaded = false;
				function loadStubFiles(callback, args) {
					var StubJSLoader = new Kore.JSLoader();
					StubJSLoader.addFile("includes/yui/yahoo/yahoo.js");
					StubJSLoader.addFile("includes/yui/event/event.js");
					StubJSLoader.addFile("includes/yui/connection/connection.js");
					StubJSLoader.addFile("includes/kore/js/error.js");
					StubJSLoader.addFile("includes/kore/js/dataprovider/transporter.js");
					StubJSLoader.addFile("includes/kore/js/dataprovider/dataprovider.js");
					StubJSLoader.addFile("includes/kore/js/dataprovider/jsonprovider.js");
					StubJSLoader.loadFiles(function() {
						StubFilesLoaded = true;
						callback.apply(null, args);
					});
				}';
            $GLOBALS['stub_loader'] = true;
        }
        foreach ($this->exportedMethods as $m) {
            $obj_prefix1 = '';
            $obj_prefix2 = '';
            if ($m['object']) {
                $obj_prefix1 = $m['object'] . '_';
                $obj_prefix2 = $m['object'];
            }
            $toret .= '
				' . $obj_prefix1 . $m['method'] . ' = function() {
					if(!StubFilesLoaded) { loadStubFiles(' . $obj_prefix1 . $m['method'] . ', arguments);return;};
					var params = arguments;
					var functor = params[params.length-1];
					var postOptions;
					var hash = {
						"AjaxServiceCall": "true", 
						"ServiceObject" : "' . $obj_prefix2 . '", 
						"ServiceMethod" : "' . $m['method'] . '"
					};
					for (var i = 0; i < params.length-1; i++) {
						var sPar = params[i];
						if((typeof params[i] == "string") && /^\\{[^\\}]+\\}$/.test(params[i])){
							try {
								eval("var tmpObj = " + params[i]);
								Object.extend(hash, tmpObj);
							} catch(e) {};
						} else {
							if (params[i].toString() == "POST-DATA") {
								postOptions = {method: "POST", postData: params[i+1]};
								break;	
							}
							else {
								hash["params_"+i] = params[i];	
							}
						};
					}
					var url; 
					';
            if (isset($GLOBALS["stub_context"])) {
                // this file is included as the opened region in a widget
                $toret .= 'url = "' . KT_addReplaceParam($GLOBALS["stub_context"], "KT_ajax_request", "true") . '";
					';
            } else {
                if (KT_is_ajax_request()) {
                    // this page is called from a widget to output content for a region
                    $toret .= 'url = "' . KT_getFullUri() . '";
				';
                } else {
                    $toret .= '
					var L = window.location;
					url = L.protocol + "//" + L.host + L.pathname + L.search;
					if(typeof window.$ctrl != "undefined") {
                        // on a master page
						var hashParams = window.location.hash.replace(/^#/, "");
						if(hashParams){ 
						    url = window.$app_path + "?" + hashParams;
                        }
                        
                        ';
                    if (isset($GLOBALS['me'])) {
                        $toret .= '
                            var currentPanel = "' . $GLOBALS['me']->id . '";
                            url = url.replace(/[^\\?&]*__state=[^&]*/i, "");
						    if ( !(new RegExp(currentPanel + "__state=","i").test(hashParams)) ) {
                                    url += (/\\?/.test(url)? "&" : "?");
						            url += currentPanel + "__state=' . $GLOBALS['me']->currentState . '";
						    }
                            url = url.replace(/\\?&/i, "?");
                            ';
                    }
                    $toret .= '
					}
					url += (/\\?/.test(url)? "&" : "?");
					url += "KT_ajax_request=true";
					';
                }
            }
            $toret .= '
					var _querry = $H(hash).toQueryString();
					if(_querry){
						url += (/\\?/.test(url)? "&" : "?");
					}
					url += _querry;
					var provider;
					if (typeof postOptions == "undefined") {
					   	provider = new Kore.JsonProvider(url);
					} else {
						provider = new Kore.JsonProvider(url, postOptions);
					}
					provider.updateEvent.subscribe(functor, provider, true);
					provider.getContent();
				}';
        }
        $toret .= '
            //-->
			</script>
		';
        return $toret;
    }
예제 #2
0
<?php

if (KT_is_ajax_request()) {
    $jaxon__all_panels = array_keys($GLOBALS['ctrl']->panels);
    $jaxon__real_panels = array();
    $strlens = array();
    $contents = '';
    $start_index = 0;
    for ($jaxon__i = 0; $jaxon__i < count($jaxon__all_panels); $jaxon__i++) {
        $panelId = $jaxon__all_panels[$jaxon__i];
        $panelObj =& $ctrl->getPanel($panelId);
        $must_return = $panelObj->stateFromUrl;
        if (in_array($panelId, $GLOBALS['panels_from_lc']) && !isset($_GET['KT_tooltip'])) {
            $must_return = true;
        }
        if ($must_return) {
            $tmp_arr = array('panels' => array($panelId => array('start' => 0, 'current_state' => $panelObj->currentState)));
            header('Kt_json: ' . KT_json($tmp_arr));
            ob_start();
            $panelObj->renderBegin();
            require $panelObj->getFileName();
            $panelObj->renderEnd();
            $content = ob_get_contents();
            ob_end_clean();
            $content_js = $ctrl->renderJsBindings(false);
            $contents .= $content . $content_js;
            $strlen_content = strlen($content);
            $strlen_content_js = strlen($content_js);
            $strlen_all = $strlen_content + $strlen_content_js;
            $strlens[$panelId] = array('start' => $start_index, 'current_state' => $panelObj->currentState, 'end' => $start_index + $strlen_all, 'content' => $strlen_content, 'content_js' => $strlen_content_js);
            $start_index += $strlen_all;
예제 #3
0
/**
 * Make the redirect on server side; 
 * @param string $url the URL to which is makeing the redirect;
 * @return nothing;
 */
function KT_redir($url)
{
    $protocol = "http://";
    $server_name = $_SERVER["HTTP_HOST"];
    if ($server_name != '') {
        $protocol = "http://";
        if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") {
            $protocol = "https://";
        }
        if (preg_match("#^/#", $url)) {
            $url = $protocol . $server_name . $url;
        } else {
            if (!preg_match("#^[a-z]+://#", $url)) {
                $script = KT_getPHP_SELF();
                if (isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] != '' && $_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) {
                    $script = substr($script, 0, strlen($script) - strlen($_SERVER['PATH_INFO']));
                }
                $url = $protocol . $server_name . preg_replace("#/[^/]*\$#", "/", $script) . $url;
            }
        }
        $url = str_replace(" ", "%20", $url);
        if (KT_is_ajax_request()) {
            header("Kt_location: " . $url);
            echo "Redirecting to: " . $url;
        } else {
            header("Location: " . $url);
        }
    }
    exit;
}
예제 #4
0
 /**
  * end panel rendering;
  * - outputs the panel container for script operations, if we are not in XHR request
  * @return null
  */
 function renderEnd()
 {
     $c = ob_get_contents();
     ob_end_clean();
     $visible = true;
     $test_content = trim($c);
     preg_match("/^<div\\s+class=\\\"panel__content\\\">(.*)<\\/div>\$/ims", $test_content, $matches);
     if (isset($matches[1])) {
         $test_content = trim($matches[1]);
     }
     if ($test_content == "") {
         $visible = false;
     }
     // BEGIN
     if (!KT_is_ajax_request()) {
         echo '<div id="__' . $this->id . '" class="panel_class" style="' . (!$visible ? 'display: none' : '') . '">';
         include $this->templates_path . $this->style . '/begin.html';
     }
     // CONTENT
     echo $c;
     // END
     if (!KT_is_ajax_request()) {
         include $this->templates_path . $this->style . '/end.html';
         echo "</div>";
     }
     if (count($this->lateHtml) > 0) {
         echo join("", $this->lateHtml);
     }
 }