| | |
| | | var $config; |
| | | var $framed = false; |
| | | var $pagetitle = ''; |
| | | var $message = null; |
| | | var $env = array(); |
| | | var $js_env = array(); |
| | | var $js_commands = array(); |
| | |
| | | $this->add_script($javascript, 'head_top'); |
| | | $this->add_script($javascript_foot, 'foot'); |
| | | $this->scripts_path = 'program/js/'; |
| | | $this->include_script('jquery.js'); |
| | | $this->include_script('jquery-1.3.min.js'); |
| | | $this->include_script('common.js'); |
| | | $this->include_script('app.js'); |
| | | |
| | |
| | | */ |
| | | public function command() |
| | | { |
| | | $this->js_commands[] = func_get_args(); |
| | | $cmd = func_get_args(); |
| | | if (strpos($cmd[0], 'plugin.') === false) |
| | | $this->js_commands[] = $cmd; |
| | | } |
| | | |
| | | |
| | |
| | | * @param string Message to display |
| | | * @param string Message type [notice|confirm|error] |
| | | * @param array Key-value pairs to be replaced in localized text |
| | | * @param boolean Override last set message |
| | | * @uses self::command() |
| | | */ |
| | | public function show_message($message, $type='notice', $vars=NULL) |
| | | public function show_message($message, $type='notice', $vars=null, $override=true) |
| | | { |
| | | $this->command( |
| | | 'display_message', |
| | | rcube_label(array('name' => $message, 'vars' => $vars)), |
| | | $type); |
| | | if ($override || !$this->message) { |
| | | $this->message = $message; |
| | | $this->command( |
| | | 'display_message', |
| | | rcube_label(array('name' => $message, 'vars' => $vars)), |
| | | $type); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | private function parse($name = 'main', $exit = true) |
| | | { |
| | | $skin_path = $this->config['skin_path']; |
| | | $plugin = false; |
| | | |
| | | $temp = explode(".", $name, 2); |
| | | if (count($temp) > 1) { |
| | | $plugin = $temp[0]; |
| | | $name = $temp[1]; |
| | | $skin_dir = $plugin . '/skins/' . $this->config['skin']; |
| | | $skin_path = $this->app->plugins->dir . $skin_dir; |
| | | if (!is_dir($skin_path)) { // fallback to default skin |
| | | $skin_dir = $plugin . '/skins/default'; |
| | | $skin_path = $this->app->plugins->dir . $skin_dir; |
| | | } |
| | | } |
| | | |
| | | $path = "$skin_path/templates/$name.html"; |
| | | |
| | | // read template file |
| | |
| | | 'message' => 'Error loading template for '.$name |
| | | ), true, true); |
| | | return false; |
| | | } |
| | | |
| | | // replace all path references to plugins/... with the configured plugins dir |
| | | // and /this/ to the current plugin skin directory |
| | | if ($plugin) { |
| | | $templ = preg_replace(array('/\bplugins\//', '/(["\']?)\/this\//'), array($this->app->plugins->url, '\\1'.$this->app->plugins->url.$skin_dir.'/'), $templ); |
| | | } |
| | | |
| | | // parse for specialtags |
| | |
| | | ); |
| | | } |
| | | $output = $this->parse_with_globals($output); |
| | | $this->write(trim($output), $skin_path); |
| | | $this->write(trim($output)); |
| | | if ($exit) { |
| | | exit; |
| | | } |
| | |
| | | '/config:([a-z0-9_]+)(:([a-z0-9_]+))?/i', |
| | | '/env:([a-z0-9_]+)/i', |
| | | '/request:([a-z0-9_]+)/i', |
| | | '/cookie:([a-z0-9_]+)/i' |
| | | '/cookie:([a-z0-9_]+)/i', |
| | | '/browser:([a-z0-9_]+)/i' |
| | | ), |
| | | array( |
| | | "\$_SESSION['\\1']", |
| | | "\$this->app->config->get('\\1',get_boolean('\\3'))", |
| | | "\$this->env['\\1']", |
| | | "get_input_value('\\1', RCUBE_INPUT_GPC)", |
| | | "\$_COOKIE['\\1']" |
| | | "\$_COOKIE['\\1']", |
| | | "\$this->browser->{'\\1'}" |
| | | ), |
| | | $expression); |
| | | } |
| | |
| | | else { |
| | | $incl = file_get_contents($path); |
| | | } |
| | | $incl = $this->parse_conditions($incl); |
| | | return $this->parse_xml($incl); |
| | | } |
| | | break; |
| | |
| | | case 'cookie': |
| | | $value = htmlspecialchars($_COOKIE[$name]); |
| | | break; |
| | | case 'browser': |
| | | $value = $this->browser->{$name}; |
| | | break; |
| | | } |
| | | |
| | | if (is_array($value)) { |
| | |
| | | } |
| | | // get localized text for labels and titles |
| | | if ($attrib['title']) { |
| | | $attrib['title'] = Q(rcube_label($attrib['title'])); |
| | | $attrib['title'] = Q(rcube_label($attrib['title'], $attrib['domain'])); |
| | | } |
| | | if ($attrib['label']) { |
| | | $attrib['label'] = Q(rcube_label($attrib['label'])); |
| | | $attrib['label'] = Q(rcube_label($attrib['label'], $attrib['domain'])); |
| | | } |
| | | if ($attrib['alt']) { |
| | | $attrib['alt'] = Q(rcube_label($attrib['alt'])); |
| | | $attrib['alt'] = Q(rcube_label($attrib['alt'], $attrib['domain'])); |
| | | } |
| | | |
| | | // set title to alt attribute for IE browsers |
| | | if ($this->browser->ie && $attrib['title'] && !$attrib['alt']) { |
| | | $attrib['alt'] = $attrib['title']; |
| | | unset($attrib['title']); |
| | | } |
| | | |
| | | // add empty alt attribute for XHTML compatibility |
| | |
| | | else if (in_array($attrib['command'], $a_static_commands)) { |
| | | $attrib['href'] = rcmail_url($attrib['command']); |
| | | } |
| | | else if ($attrib['command'] == 'permaurl' && !empty($this->env['permaurl'])) { |
| | | $attrib['href'] = $this->env['permaurl']; |
| | | } |
| | | else if ($attrib['command'] == 'permaurl' && !empty($this->env['permaurl'])) { |
| | | $attrib['href'] = $this->env['permaurl']; |
| | | } |
| | | } |
| | | |
| | | // overwrite attributes |