| | |
| | | // add cookie info |
| | | $this->set_env('cookie_domain', ini_get('session.cookie_domain')); |
| | | $this->set_env('cookie_path', ini_get('session.cookie_path')); |
| | | $this->set_env('cookie_secure', ini_get('session.cookie_secure')); |
| | | $this->set_env('cookie_secure', filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN)); |
| | | |
| | | // load the correct skin (in case user-defined) |
| | | $skin = $this->config->get('skin'); |
| | |
| | | |
| | | if (!empty($_REQUEST['_extwin'])) |
| | | $this->set_env('extwin', 1); |
| | | if ($this->framed || !empty($_REQUEST['_framed'])) |
| | | $this->set_env('framed', 1); |
| | | |
| | | // add common javascripts |
| | | $this->add_script('var '.self::JS_OBJECT_NAME.' = new rcube_webmail();', 'head_top'); |
| | |
| | | } |
| | | |
| | | $this->config->set('skin_path', $skin_path); |
| | | $this->base_path = $skin_path; |
| | | |
| | | // register skin path(s) |
| | | $this->skin_paths = array(); |
| | |
| | | * @param string Additional path to search in |
| | | * @return mixed Relative path to the requested file or False if not found |
| | | */ |
| | | public function get_skin_file($file, &$skin_path, $add_path = null) |
| | | public function get_skin_file($file, &$skin_path = null, $add_path = null) |
| | | { |
| | | $skin_paths = $this->skin_paths; |
| | | if ($add_path) |
| | |
| | | |
| | | /** |
| | | * Delete all stored env variables and commands |
| | | * |
| | | * @param bool $all Reset all env variables (including internal) |
| | | */ |
| | | public function reset() |
| | | public function reset($all = false) |
| | | { |
| | | $env = $all ? null : array_intersect_key($this->env, array('extwin'=>1, 'framed'=>1)); |
| | | |
| | | parent::reset(); |
| | | $this->js_env = array(); |
| | | $this->js_labels = array(); |
| | | $this->js_commands = array(); |
| | | |
| | | // let some env variables survive |
| | | $this->env = $this->js_env = $env; |
| | | $this->js_labels = array(); |
| | | $this->js_commands = array(); |
| | | $this->script_files = array(); |
| | | $this->scripts = array(); |
| | | $this->header = ''; |
| | |
| | | $this->parse($templ, false); |
| | | } |
| | | else { |
| | | $this->framed = $templ == 'iframe' ? true : $this->framed; |
| | | $this->framed = true; |
| | | $this->write(); |
| | | } |
| | | |
| | |
| | | // unlock interface after iframe load |
| | | $unlock = preg_replace('/[^a-z0-9]/i', '', $_REQUEST['_unlock']); |
| | | if ($this->framed) { |
| | | array_unshift($this->js_commands, array('set_busy', false, null, $unlock)); |
| | | array_unshift($this->js_commands, array('iframe_loaded', $unlock)); |
| | | } |
| | | else if ($unlock) { |
| | | array_unshift($this->js_commands, array('hide_message', $unlock)); |
| | |
| | | $this->set_env('request_token', $this->app->get_request_token()); |
| | | |
| | | // write all env variables to client |
| | | $js = $this->framed ? "if(window.parent) {\n" : ''; |
| | | $js .= $this->get_js_commands() . ($this->framed ? ' }' : ''); |
| | | $this->add_script($js, 'head_top'); |
| | | if ($commands = $this->get_js_commands()) { |
| | | $js = $this->framed ? "if (window.parent) {\n" : ''; |
| | | $js .= $commands . ($this->framed ? ' }' : ''); |
| | | $this->add_script($js, 'head_top'); |
| | | } |
| | | |
| | | // send clickjacking protection headers |
| | | $iframe = $this->framed || !empty($_REQUEST['_framed']); |
| | |
| | | * |
| | | * @param string $input |
| | | * @return string |
| | | * @uses rcube_output_html::parse_xml() |
| | | * @uses rcmail_output_html::parse_xml() |
| | | * @since 0.1-rc1 |
| | | */ |
| | | public function just_parse($input) |
| | |
| | | // include a file |
| | | case 'include': |
| | | $old_base_path = $this->base_path; |
| | | if (!empty($attrib['skin_path'])) $attrib['skinpath'] = $attrib['skin_path']; |
| | | if ($path = $this->get_skin_file($attrib['file'], $skin_path, $attrib['skinpath'])) { |
| | | $this->base_path = preg_replace('!plugins/\w+/!', '', $skin_path); // set base_path to core skin directory (not plugin's skin) |
| | | $path = realpath($path); |