public function addJsFileRef($js_file, $use_local_js_lib = true)
 {
     if ($use_local_js_lib == true) {
         $local_js_lib = __ApplicationContext::getInstance()->getPropertyContent('JS_LIB_DIR');
         $js_file = __UrlHelper::resolveUrl(__UrlHelper::glueUrlParts($local_js_lib, $js_file));
     } else {
         $js_file = __UrlHelper::resolveUrl($js_file);
     }
     $this->_js_files[] = '"' . $js_file . '"';
 }
    public function startRender(__IComponent &$component)
    {
        $properties = array();
        $component_id = $component->getId();
        $date_format = $component->getDateFormat();
        $datebox_button_id = $component_id . '_calbutton';
        if (__ResponseWriterManager::getInstance()->hasResponseWriter('datebox')) {
            $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('datebox');
            $jod_setup_response_writer = $jod_response_writer->getResponseWriter('datebox-setup');
        } else {
            $jod_response_writer = new __JavascriptOnDemandResponseWriter('datebox');
            $jod_response_writer->addCssFileRef('jscalendar/calendar-green.css');
            $jod_response_writer->addJsFileRef('jscalendar/calendar.js');
            $jod_response_writer->addLoadCheckingVariable('Calendar');
            $jod_language_response_writer = new __JavascriptOnDemandResponseWriter('datebox-language');
            $jod_language_response_writer->addJsFileRef('jscalendar/lang/calendar-en.js');
            $jod_language_response_writer->addLoadCheckingVariable('Calendar._DN');
            $jod_response_writer->addResponseWriter($jod_language_response_writer);
            $jod_setup_response_writer = new __JavascriptOnDemandResponseWriter('datebox-setup');
            $jod_setup_response_writer->addJsFileRef('jscalendar/calendar-setup.js');
            $jod_setup_response_writer->addLoadCheckingVariable('Calendar.setup');
            $jod_language_response_writer->addResponseWriter($jod_setup_response_writer);
            $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
            $javascript_rw->addResponseWriter($jod_response_writer);
        }
        $js_code = <<<CODESET
Calendar.setup({
\tinputField:"{$component_id}",
\tifFormat:"{$date_format}",
\tbutton:"{$datebox_button_id}",
\tshowsTime:false
});
CODESET;
        $jod_setup_response_writer->addJsCode($js_code);
        $component_properties = $component->getProperties();
        foreach ($component_properties as $property => $value) {
            $properties[] = $property . '="' . $value . '"';
        }
        $properties[] = 'type="text"';
        $properties[] = 'id="' . $component->getId() . '"';
        $properties[] = 'name="' . $component->getName() . '"';
        $properties[] = 'value="' . $component->getValue() . '"';
        if ($component->getVisible() == false) {
            $properties[] = 'style = "display : none;"';
        }
        $local_js_lib = __ApplicationContext::getInstance()->getPropertyContent('JS_LIB_DIR');
        $calendar_image_url = __UrlHelper::resolveUrl('jscalendar/calendar.gif', $local_js_lib);
        $return_value = '<input onchange="this.fire(\'lion:validate\');" ' . implode(' ', $properties) . '>&nbsp;<input type="image" src="' . $calendar_image_url . '"  id="' . $datebox_button_id . '" width="16" height="16" border="0">';
        return $return_value;
    }
 public function startRender()
 {
     if (__FrontController::getInstance()->getRequestType() != REQUEST_TYPE_XMLHTTP) {
         if (__ApplicationContext::getInstance()->hasProperty('INCLUDE_LION_JS')) {
             $include_lion_js = __ApplicationContext::getInstance()->getPropertyContent('INCLUDE_LION_JS');
         } else {
             $include_lion_js = true;
         }
         if ($include_lion_js) {
             $local_js_lib = __ApplicationContext::getInstance()->getPropertyContent('JS_LIB_DIR');
             $lion_js_file = __UrlHelper::resolveUrl(__UrlHelper::glueUrlParts($local_js_lib, 'lion.js'));
             __FrontController::getInstance()->getResponse()->prependContent('<script language="javascript" type="text/javascript" src="' . $lion_js_file . '"></script>' . "\n", 'lion-js');
         }
     }
     $response_writer_manager = __ResponseWriterManager::getInstance();
     if ($response_writer_manager->hasResponseWriter('javascript')) {
         $javascript_response_writer = $response_writer_manager->getResponseWriter('javascript');
     } else {
         $javascript_response_writer = new __JavascriptOnDemandResponseWriter('javascript');
         $response_writer_manager->addResponseWriter($javascript_response_writer);
     }
     if (!$javascript_response_writer->hasResponseWriter('setup-client-event-handler')) {
         $setup_client_event_handler_rw = new __JavascriptOnDemandResponseWriter('setup-client-event-handler');
         $js_code = "\n" . '(__ClientEventHandler.getInstance()).setCode("' . __CurrentContext::getInstance()->getId() . '");' . "\n";
         if (__Lion::getInstance()->getRuntimeDirectives()->getDirective('DEBUG_MODE')) {
             $js_code .= "(__ClientEventHandler.getInstance()).setDebug(true);\n";
             if (__ApplicationContext::getInstance()->getPropertyContent('DEBUG_AJAX_CALLS') == true) {
                 if (strtoupper(__ApplicationContext::getInstance()->getPropertyContent('DEBUGGER')) == 'ZEND') {
                     $client_ip = $_SERVER['REMOTE_ADDR'];
                     $debug_port = __ApplicationContext::getInstance()->getPropertyContent('ZEND_DEBUG_PORT');
                     $debug_url = 'index.ajax?' . 'start_debug=1&debug_port=' . $debug_port . '&debug_fastfile=1&debug_host=' . $client_ip . '&send_sess_end=1&debug_stop=1&debug_url=1&debug_new_session=1&no_remote=1';
                     $js_code .= "(__ClientEventHandler.getInstance()).setUrl('" . $debug_url . "');\n";
                 }
             }
         }
         if (!__FrontController::getInstance() instanceof __ComponentLazyLoaderFrontController && __FrontController::getInstance()->getRequestType() == REQUEST_TYPE_HTTP) {
             $url = __FrontController::getInstance()->getRequest()->getUrl();
             $encoded_url = base64_encode(serialize($url));
             $js_code .= "(__ClientEventHandler.getInstance()).setViewCode('" . $encoded_url . "');\n";
             $flow_scope = __ApplicationContext::getInstance()->getFlowScope();
             if ($flow_scope != null) {
                 $js_code .= "(__ClientEventHandler.getInstance()).setFlowExecutionKey('" . $flow_scope->getId() . "');\n";
             }
         }
         $setup_client_event_handler_rw->addJsCode($js_code);
         $javascript_response_writer->addResponseWriter($setup_client_event_handler_rw);
     }
     parent::startRender();
 }
 public function showDocumentationAction()
 {
     $mav = new __ModelAndView('documentation');
     if ($this->_page != null && $this->_doc_content != null) {
         $mav->doc_content = $this->_doc_content;
         if (strpos($this->_page, '.pkg') !== false || $this->_page == 'index') {
             $mav->show_toc = true;
             $doc_toc = LION_DIR . DIRECTORY_SEPARATOR . 'documentation' . DIRECTORY_SEPARATOR . $this->_doc_directory . DIRECTORY_SEPARATOR . 'Lion' . DIRECTORY_SEPARATOR . 'tutorial_Lion.Toc.pkg.html';
             if (is_file($doc_toc) && is_readable($doc_toc)) {
                 $toc_content = file_get_contents($doc_toc);
                 $toc_content = str_replace('../', __UrlHelper::resolveUrl('documentation/'), $toc_content);
                 $toc_content = preg_replace('/(\\/documentation\\/.+?)\\.html/', '$1.lion', $toc_content);
                 $mav->toc = $toc_content;
             }
         } else {
             $mav->show_toc = false;
         }
     }
     return $mav;
 }
 private static function _validateRewriteEngine()
 {
     $rewrite_engine_working = false;
     //by default
     if (__Client::getInstance()->getRequestType() != REQUEST_TYPE_COMMAND_LINE) {
         $test_url = __UriFactory::getInstance()->createUri()->setRoute('testResponse')->getUrl();
         $test_url = __UrlHelper::resolveUrl($test_url, 'http://' . $_SERVER['SERVER_NAME']);
         if ($stream = @fopen($test_url, 'r')) {
             // print all the page starting at the offset 10
             $test_content = stream_get_contents($stream);
             fclose($stream);
             if ($test_content == 'OK') {
                 $rewrite_engine_working = true;
             }
         }
         if ($rewrite_engine_working == false) {
             throw __ExceptionFactory::getInstance()->createException('Either mod rewrite is not enabled in your server or is not well configured.');
         }
     }
 }
 protected function _readLinks($uri, $source, $level)
 {
     $return_value = array();
     foreach (DOMDocument::loadHTML($source)->getElementsByTagName('a') as $a) {
         $a->getAttribute('href');
         if (!$a->hasAttribute('rel') || !preg_match('/nofollow/', $a->getAttribute('rel'))) {
             $href = $a->getAttribute('href');
             if (!preg_match('/^javascript/', $href)) {
                 $anchor_text = $a->textContent;
                 $href = __UrlHelper::resolveUrl($a->getAttribute('href'), 'http://' . $_SERVER['HTTP_HOST']);
                 $link = new __SiteMapLink();
                 $link->setLevel($level);
                 $link->setAnchorText('' . $anchor_text);
                 $link->setHref('' . $href);
                 $return_value[] = $link;
                 unset($link);
                 unset($a);
             }
         }
     }
     return $return_value;
 }
 public function getUrl()
 {
     //Set default values for non-defined variables:
     foreach ($this->_variable_patterns as $variable_name => $variable_pattern) {
         if ($this->_url_pattern->getVariableValue($variable_name) === null && !$this->_url_pattern->isOptionalVariable($variable_name)) {
             $this->_url_pattern->setVariableDefaultValue($variable_name, $this->_getValidValueForVariable($variable_name));
         }
     }
     //Get the inverse expression (this will be the url without parameters)
     $return_value = $this->_url_pattern->getREInverse();
     if (defined("APP_URL_PATH")) {
         $url_path = APP_URL_PATH;
     } else {
         $url_path = __ApplicationContext::getInstance()->getPropertyContent('APP_URL_PATH');
     }
     $return_value = __UrlHelper::resolveUrl($return_value, $url_path);
     //Add parameters to the url:
     if (count($this->_parameters) > 0) {
         $return_value .= '?' . http_build_query($this->_parameters);
     }
     return $return_value;
 }