From e70b3b24fc8ac7b54a820ae87ce8f4af4043125e Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Thu, 09 Oct 2008 02:25:43 -0400 Subject: [PATCH] - send set_unread_count() only when changing /Seen status --- program/include/rcube_template.php | 43 +++++++++++++++++++++++++++++++++---------- 1 files changed, 33 insertions(+), 10 deletions(-) diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 98e29e7..2108ed7 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -54,6 +54,7 @@ $this->app = rcmail::get_instance(); $this->config = $this->app->config->all(); + $this->browser = new rcube_browser(); //$this->framed = $framed; $this->set_env('task', $task); @@ -464,26 +465,38 @@ * @todo Get rid off eval() once I understand what this does. * @todo Extend this to allow real conditions, not just "set" * @param string Condition statement - * @return boolean True if condition is met, False is not + * @return boolean True if condition is met, False if not */ private function check_condition($condition) { - $condition = preg_replace( + return eval("return (".$this->parse_expression($condition).");"); + } + + + /** + * Parses expression and replaces variables + * + * @param string Expression statement + * @return string Expression statement + */ + private function parse_expression($expression) + { + return preg_replace( array( '/session:([a-z0-9_]+)/i', '/config:([a-z0-9_]+)(:([a-z0-9_]+))?/i', '/env:([a-z0-9_]+)/i', - '/request:([a-z0-9_]+)/ie' + '/request:([a-z0-9_]+)/i', + '/cookie:([a-z0-9_]+)/i' ), array( "\$_SESSION['\\1']", "\$this->app->config->get('\\1',get_boolean('\\3'))", "\$this->env['\\1']", - "get_input_value('\\1', RCUVE_INPUT_GPC)" + "get_input_value('\\1', RCUBE_INPUT_GPC)", + "\$_COOKIE['\\1']" ), - $condition); - - return eval("return (".$condition.");"); + $expression); } @@ -616,6 +629,11 @@ return Q($title); } break; + + // return code for a specified eval expression + case 'exp': + $value = $this->parse_expression($attrib['expression']); + return eval("return Q($value);"); // return variable case 'var': @@ -638,6 +656,9 @@ break; case 'session': $value = $_SESSION[$name]; + break; + case 'cookie': + $value = htmlspecialchars($_COOKIE[$name]); break; } @@ -687,8 +708,6 @@ return ''; } - $browser = new rcube_browser(); - // try to find out the button type if ($attrib['type']) { $attrib['type'] = strtolower($attrib['type']); @@ -735,7 +754,7 @@ $attrib['alt'] = Q(rcube_label($attrib['alt'])); } // set title to alt attribute for IE browsers - if ($browser->ie && $attrib['title'] && !$attrib['alt']) { + if ($this->browser->ie && $attrib['title'] && !$attrib['alt']) { $attrib['alt'] = $attrib['title']; unset($attrib['title']); } @@ -998,6 +1017,10 @@ if (empty($attrib['id'])) { $attrib['id'] = 'rcmqsearchbox'; } + if ($attrib['type'] == 'search' && !$this->browser->khtml) { + unset($attrib['type'], $attrib['results']); + } + $input_q = new html_inputfield($attrib); $out = $input_q->show(); -- Gitblit v1.9.1