| | |
| | | private function parse($name = 'main', $exit = true) |
| | | { |
| | | $skin_path = $this->config['skin_path']; |
| | | $plugin = false; |
| | | $plugin = false; |
| | | $realname = $name; |
| | | $temp = explode('.', $name, 2); |
| | | $this->plugin_skin_path = null; |
| | | |
| | | $temp = explode(".", $name, 2); |
| | | if (count($temp) > 1) { |
| | | $plugin = $temp[0]; |
| | | $name = $temp[1]; |
| | | $skin_dir = $plugin . '/skins/' . $this->config['skin']; |
| | | $plugin = $temp[0]; |
| | | $name = $temp[1]; |
| | | $skin_dir = $plugin . '/skins/' . $this->config['skin']; |
| | | $skin_path = $this->plugin_skin_path = $this->app->plugins->dir . $skin_dir; |
| | | if (!is_dir($skin_path)) { // fallback to default skin |
| | | |
| | | // fallback to default skin |
| | | if (!is_dir($skin_path)) { |
| | | $skin_dir = $plugin . '/skins/default'; |
| | | $skin_path = $this->plugin_skin_path = $this->app->plugins->dir . $skin_dir; |
| | | } |
| | |
| | | |
| | | $path = "$skin_path/templates/$name.html"; |
| | | |
| | | if (!is_readable($path) && $this->deprecated_templates[$name]) { |
| | | $path = "$skin_path/templates/".$this->deprecated_templates[$name].".html"; |
| | | if (!is_readable($path) && $this->deprecated_templates[$realname]) { |
| | | $path = "$skin_path/templates/".$this->deprecated_templates[$realname].".html"; |
| | | if (is_readable($path)) |
| | | raise_error(array('code' => 502, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Using deprecated template '".$this->deprecated_templates[$name]."' in ".$this->config['skin_path']."/templates. Please rename to '".$name."'"), |
| | | 'message' => "Using deprecated template '".$this->deprecated_templates[$realname] |
| | | ."' in ".$this->config['skin_path']."/templates. Please rename to '".$realname."'"), |
| | | true, false); |
| | | } |
| | | |
| | |
| | | 'type' => 'php', |
| | | 'line' => __LINE__, |
| | | 'file' => __FILE__, |
| | | 'message' => 'Error loading template for '.$name |
| | | 'message' => 'Error loading template for '.$realname |
| | | ), true, true); |
| | | return false; |
| | | } |
| | |
| | | $output = $this->parse_xml($output); |
| | | |
| | | // trigger generic hook where plugins can put additional content to the page |
| | | $hook = $this->app->plugins->exec_hook("render_page", array('template' => $name, 'content' => $output)); |
| | | $hook = $this->app->plugins->exec_hook("render_page", array('template' => $realname, 'content' => $output)); |
| | | |
| | | // add debug console |
| | | if ($this->config['debug_level'] & 8) { |
| | |
| | | */ |
| | | private function parse_conditions($input) |
| | | { |
| | | $matches = preg_split('/<roundcube:(if|elseif|else|endif)\s+([^>]+)>/is', $input, 2, PREG_SPLIT_DELIM_CAPTURE); |
| | | $matches = preg_split('/<roundcube:(if|elseif|else|endif)\s+([^>]+)>\n?/is', $input, 2, PREG_SPLIT_DELIM_CAPTURE); |
| | | if ($matches && count($matches) == 4) { |
| | | if (preg_match('/^(else|endif)$/i', $matches[1])) { |
| | | return $matches[0] . $this->parse_conditions($matches[3]); |
| | |
| | | $attrib = parse_attrib_string($matches[2]); |
| | | if (isset($attrib['condition'])) { |
| | | $condmet = $this->check_condition($attrib['condition']); |
| | | $submatches = preg_split('/<roundcube:(elseif|else|endif)\s+([^>]+)>/is', $matches[3], 2, PREG_SPLIT_DELIM_CAPTURE); |
| | | $submatches = preg_split('/<roundcube:(elseif|else|endif)\s+([^>]+)>\n?/is', $matches[3], 2, PREG_SPLIT_DELIM_CAPTURE); |
| | | if ($condmet) { |
| | | $result = $submatches[0]; |
| | | $result.= ($submatches[1] != 'endif' ? preg_replace('/.*<roundcube:endif\s+[^>]+>/Uis', '', $submatches[3], 1) : $submatches[3]); |
| | | $result.= ($submatches[1] != 'endif' ? preg_replace('/.*<roundcube:endif\s+[^>]+>\n?/Uis', '', $submatches[3], 1) : $submatches[3]); |
| | | } |
| | | else { |
| | | $result = "<roundcube:$submatches[1] $submatches[2]>" . $submatches[3]; |
| | |
| | | $username = $this->app->user->get_username(); |
| | | } |
| | | |
| | | return idn_to_utf8($username); |
| | | return rcube_idn_to_utf8($username); |
| | | } |
| | | |
| | | |
| | |
| | | $host_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off'); |
| | | $pass_attrib = $autocomplete > 1 ? array() : array('autocomplete' => 'off'); |
| | | |
| | | $input_task = new html_hiddenfield(array('name' => '_task', 'value' => 'login')); |
| | | $input_action = new html_hiddenfield(array('name' => '_action', 'value' => 'login')); |
| | | $input_tzone = new html_hiddenfield(array('name' => '_timezone', 'id' => 'rcmlogintz', 'value' => '_default_')); |
| | | $input_url = new html_hiddenfield(array('name' => '_url', 'id' => 'rcmloginurl', 'value' => $url)); |
| | |
| | | $table->add(null, $input_host->show(get_input_value('_host', RCUBE_INPUT_GPC))); |
| | | } |
| | | |
| | | $out = $input_action->show(); |
| | | $out = $input_task->show(); |
| | | $out .= $input_action->show(); |
| | | $out .= $input_tzone->show(); |
| | | $out .= $input_url->show(); |
| | | $out .= $table->show(); |
| | |
| | | 'UTF-8' => 'UTF-8 ('.rcube_label('unicode').')', |
| | | 'US-ASCII' => 'ASCII ('.rcube_label('english').')', |
| | | 'ISO-8859-1' => 'ISO-8859-1 ('.rcube_label('westerneuropean').')', |
| | | 'ISO-8859-2' => 'ISO-8895-2 ('.rcube_label('easterneuropean').')', |
| | | 'ISO-8859-4' => 'ISO-8895-4 ('.rcube_label('baltic').')', |
| | | 'ISO-8859-2' => 'ISO-8859-2 ('.rcube_label('easterneuropean').')', |
| | | 'ISO-8859-4' => 'ISO-8859-4 ('.rcube_label('baltic').')', |
| | | 'ISO-8859-5' => 'ISO-8859-5 ('.rcube_label('cyrillic').')', |
| | | 'ISO-8859-6' => 'ISO-8859-6 ('.rcube_label('arabic').')', |
| | | 'ISO-8859-7' => 'ISO-8859-7 ('.rcube_label('greek').')', |