From 9b3fdc25c171d2b2461af42224ea16ad6c032c49 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Fri, 19 Mar 2010 07:20:12 -0400 Subject: [PATCH] - Implemented messages copying using drag&drop + SHIFT (#1484086) --- program/include/rcube_template.php | 144 +++++++++++++++++++++++++---------------------- 1 files changed, 77 insertions(+), 67 deletions(-) diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index ecb5a89..ad498c9 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -73,7 +73,7 @@ $this->add_script($javascript, 'head_top'); $this->add_script($javascript_foot, 'foot'); $this->scripts_path = 'program/js/'; - $this->include_script('jquery-1.3.min.js'); + $this->include_script('jquery-1.4.min.js'); $this->include_script('common.js'); $this->include_script('app.js'); @@ -290,7 +290,9 @@ if ($templ != 'iframe') { // prevent from endless loops if ($exit != 'recur' && $this->app->plugins->is_processing('render_page')) { - raise_error(array('code' => 505, 'type' => 'php', 'message' => 'Recursion alert: ignoring output->send()'), true, false); + raise_error(array('code' => 505, 'type' => 'php', + 'file' => __FILE__, 'line' => __LINE__, + 'message' => 'Recursion alert: ignoring output->send()'), true, false); return; } $this->parse($templ, false); @@ -392,8 +394,8 @@ // add debug console if ($this->config['debug_level'] & 8) { $this->add_footer('<div id="console" style="position:absolute;top:5px;left:5px;width:405px;padding:2px;background:white;z-index:9000;"> - <a href="#toggle" onclick="con=document.getElementById(\'dbgconsole\');con.style.display=(con.style.display==\'none\'?\'block\':\'none\');return false">console</a> - <form action="/" name="debugform" style="display:inline"><textarea name="console" id="dbgconsole" rows="20" cols="40" wrap="off" style="display:none;width:400px;border:none;font-size:x-small" spellcheck="false"></textarea></form></div>' + <a href="#toggle" onclick="con=$(\'#dbgconsole\');con[con.is(\':visible\')?\'hide\':\'show\']();return false">console</a> + <textarea name="console" id="dbgconsole" rows="20" cols="40" wrap="off" style="display:none;width:400px;border:none;font-size:10px" spellcheck="false"></textarea></div>' ); } @@ -455,7 +457,16 @@ { $GLOBALS['__version'] = Q(RCMAIL_VERSION); $GLOBALS['__comm_path'] = Q($this->app->comm_path); - return preg_replace('/\$(__[a-z0-9_\-]+)/e', '$GLOBALS["\\1"]', $input); + return preg_replace_callback('/\$(__[a-z0-9_\-]+)/', + array($this, 'globals_callback'), $input); + } + + /** + * Callback funtion for preg_replace_callback() in parse_with_globals() + */ + private function globals_callback($matches) + { + return $GLOBALS[$matches[1]]; } /** @@ -544,7 +555,7 @@ * Parses expression and replaces variables * * @param string Expression statement - * @return string Expression statement + * @return string Expression value */ private function parse_expression($expression) { @@ -840,50 +851,21 @@ 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 if (!$attrib['href']) { $attrib['href'] = '#'; } - if ($command) { + if ($command && !$attrib['onclick']) { $attrib['onclick'] = sprintf( "return %s.command('%s','%s',this)", JS_OBJECT_NAME, $command, $attrib['prop'] - ); - } - if ($command && $attrib['imageover']) { - $attrib['onmouseover'] = sprintf( - "return %s.button_over('%s','%s')", - JS_OBJECT_NAME, - $command, - $attrib['id'] - ); - $attrib['onmouseout'] = sprintf( - "return %s.button_out('%s','%s')", - JS_OBJECT_NAME, - $command, - $attrib['id'] - ); - } - - if ($command && $attrib['imagesel']) { - $attrib['onmousedown'] = sprintf( - "return %s.button_sel('%s','%s')", - JS_OBJECT_NAME, - $command, - $attrib['id'] - ); - $attrib['onmouseup'] = sprintf( - "return %s.button_out('%s','%s')", - JS_OBJECT_NAME, - $command, - $attrib['id'] ); } @@ -905,7 +887,7 @@ $link_attrib = array('href', 'onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'target'); } else if ($attrib['type']=='link') { - $btn_content = $attrib['label'] ? $attrib['label'] : $attrib['command']; + $btn_content = isset($attrib['content']) ? $attrib['content'] : ($attrib['label'] ? $attrib['label'] : $attrib['command']); $link_attrib = array('href', 'onclick', 'title', 'id', 'class', 'style', 'tabindex', 'target'); } else if ($attrib['type']=='input') { @@ -1004,7 +986,7 @@ return $username; } - // get e-mail address form default identity + // get e-mail address from default identity if ($sql_arr = $this->app->user->get_identity()) { $username = $sql_arr['email']; } @@ -1034,8 +1016,8 @@ if (empty($url) && !preg_match('/_(task|action)=logout/', $_SERVER['QUERY_STRING'])) $url = $_SERVER['QUERY_STRING']; - $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser', 'size' => 30) + $attrib); - $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd', 'size' => 30) + $attrib); + $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser') + $attrib); + $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd') + $attrib); $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)); @@ -1055,7 +1037,7 @@ } } else if (empty($default_host)) { - $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost', 'size' => 30)); + $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost') + $attrib); } $form_name = !empty($attrib['form']) ? $attrib['form'] : 'form'; @@ -1152,39 +1134,67 @@ * @param array Named parameters for the select tag * @return string HTML code for the gui object */ - static function charset_selector($attrib) + function charset_selector($attrib) { // pass the following attributes to the form class $field_attrib = array('name' => '_charset'); foreach ($attrib as $attr => $value) { - if (in_array($attr, array('id', 'class', 'style', 'size', 'tabindex'))) { + if (in_array($attr, array('id', 'name', 'class', 'style', 'size', 'tabindex'))) { $field_attrib[$attr] = $value; } } + $charsets = array( - 'US-ASCII' => 'ASCII (English)', - 'EUC-JP' => 'EUC-JP (Japanese)', - 'EUC-KR' => 'EUC-KR (Korean)', - 'BIG5' => 'BIG5 (Chinese)', - 'GB2312' => 'GB2312 (Chinese)', - 'ISO-2022-JP' => 'ISO-2022-JP (Japanese)', - 'ISO-8859-1' => 'ISO-8859-1 (Latin-1)', - 'ISO-8859-2' => 'ISO-8895-2 (Central European)', - 'ISO-8859-7' => 'ISO-8859-7 (Greek)', - 'ISO-8859-9' => 'ISO-8859-9 (Turkish)', - 'Windows-1251' => 'Windows-1251 (Cyrillic)', - 'Windows-1252' => 'Windows-1252 (Western)', - 'Windows-1255' => 'Windows-1255 (Hebrew)', - 'Windows-1256' => 'Windows-1256 (Arabic)', - 'Windows-1257' => 'Windows-1257 (Baltic)', - 'UTF-8' => 'UTF-8' - ); + '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-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').')', + 'ISO-8859-8' => 'ISO-8859-8 ('.rcube_label('hebrew').')', + 'ISO-8859-9' => 'ISO-8859-9 ('.rcube_label('turkish').')', + 'ISO-8859-10' => 'ISO-8859-10 ('.rcube_label('nordic').')', + 'ISO-8859-11' => 'ISO-8859-11 ('.rcube_label('thai').')', + 'ISO-8859-13' => 'ISO-8859-13 ('.rcube_label('baltic').')', + 'ISO-8859-14' => 'ISO-8859-14 ('.rcube_label('celtic').')', + 'ISO-8859-15' => 'ISO-8859-15 ('.rcube_label('westerneuropean').')', + 'ISO-8859-16' => 'ISO-8859-16 ('.rcube_label('southeasterneuropean').')', + 'WINDOWS-1250' => 'Windows-1250 ('.rcube_label('easterneuropean').')', + 'WINDOWS-1251' => 'Windows-1251 ('.rcube_label('cyrillic').')', + 'WINDOWS-1252' => 'Windows-1252 ('.rcube_label('westerneuropean').')', + 'WINDOWS-1253' => 'Windows-1253 ('.rcube_label('greek').')', + 'WINDOWS-1254' => 'Windows-1254 ('.rcube_label('turkish').')', + 'WINDOWS-1255' => 'Windows-1255 ('.rcube_label('hebrew').')', + 'WINDOWS-1256' => 'Windows-1256 ('.rcube_label('arabic').')', + 'WINDOWS-1257' => 'Windows-1257 ('.rcube_label('baltic').')', + 'WINDOWS-1258' => 'Windows-1258 ('.rcube_label('vietnamese').')', + 'ISO-2022-JP' => 'ISO-2022-JP ('.rcube_label('japanese').')', + 'ISO-2022-KR' => 'ISO-2022-KR ('.rcube_label('korean').')', + 'ISO-2022-CN' => 'ISO-2022-CN ('.rcube_label('chinese').')', + 'EUC-JP' => 'EUC-JP ('.rcube_label('japanese').')', + 'EUC-KR' => 'EUC-KR ('.rcube_label('korean').')', + 'EUC-CN' => 'EUC-CN ('.rcube_label('chinese').')', + 'BIG5' => 'BIG5 ('.rcube_label('chinese').')', + 'GB2312' => 'GB2312 ('.rcube_label('chinese').')', + ); - $select = new html_select($field_attrib); - $select->add(array_values($charsets), array_keys($charsets)); + if (!empty($_POST['_charset'])) + $set = $_POST['_charset']; + else if (!empty($attrib['selected'])) + $set = $attrib['selected']; + else + $set = $this->get_charset(); - $set = $_POST['_charset'] ? $_POST['_charset'] : $this->get_charset(); - return $select->show($set); + $set = strtoupper($set); + if (!isset($charsets[$set])) + $charsets[$set] = $set; + + $select = new html_select($field_attrib); + $select->add(array_values($charsets), array_keys($charsets)); + + return $select->show($set); } } // end class rcube_template -- Gitblit v1.9.1