From 29f023ac9aa7a943efa1663f167a7ee86560ca55 Mon Sep 17 00:00:00 2001 From: Evgeny Gryaznov Date: Fri, 10 Oct 2008 21:40:57 +0000 Subject: [PATCH] expand leavemessage template git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@164 c66351dc-e62f-0410-b875-e3a5c0b9693f --- src/messenger/webim/client.php | 4 +- src/messenger/webim/design/default/.htaccess | 1 + src/messenger/webim/design/howto.txt | 12 ++++ src/messenger/webim/leavemessage.php | 4 +- src/messenger/webim/libs/expand.php | 74 ++++++++++++++++++++ 5 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 src/messenger/webim/design/default/.htaccess create mode 100644 src/messenger/webim/design/howto.txt create mode 100644 src/messenger/webim/libs/expand.php diff --git a/src/messenger/webim/client.php b/src/messenger/webim/client.php index c4d1fa7f..f88d7639 100644 --- a/src/messenger/webim/client.php +++ b/src/messenger/webim/client.php @@ -15,6 +15,7 @@ require_once('libs/common.php'); require_once('libs/chat.php'); require_once('libs/operator.php'); +require_once('libs/expand.php'); if( !isset($_GET['token']) || !isset($_GET['thread']) ) { @@ -25,8 +26,7 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) { if( !$thread ) { if(!has_online_operators()) { - start_html_output(); - require('view/chat_leavemsg.php'); + expand("design/default/leavemessage.tpl"); exit; } diff --git a/src/messenger/webim/design/default/.htaccess b/src/messenger/webim/design/default/.htaccess new file mode 100644 index 00000000..14249c50 --- /dev/null +++ b/src/messenger/webim/design/default/.htaccess @@ -0,0 +1 @@ +Deny from all \ No newline at end of file diff --git a/src/messenger/webim/design/howto.txt b/src/messenger/webim/design/howto.txt new file mode 100644 index 00000000..d1efa9f0 --- /dev/null +++ b/src/messenger/webim/design/howto.txt @@ -0,0 +1,12 @@ + + How to create a skin for chat window. + ------------------------------------- + + 1. Folder/files structure. + + myskin/ + chat.tpl + leavemessage.tpl + leavemessagesent.tpl + + \ No newline at end of file diff --git a/src/messenger/webim/leavemessage.php b/src/messenger/webim/leavemessage.php index 49d02471..1d19b557 100644 --- a/src/messenger/webim/leavemessage.php +++ b/src/messenger/webim/leavemessage.php @@ -14,6 +14,7 @@ require_once('libs/common.php'); require_once('libs/chat.php'); +require_once('libs/expand.php'); $errors = array(); $page = array(); @@ -38,8 +39,7 @@ if( count($errors) > 0 ) { $page['formname'] = topage($visitor_name); $page['formemail'] = $email; $page['formmessage'] = topage($message); - start_html_output(); - require('view/chat_leavemsg.php'); + expand("design/default/leavemessage.tpl"); exit; } diff --git a/src/messenger/webim/libs/expand.php b/src/messenger/webim/libs/expand.php new file mode 100644 index 00000000..2c50f0c7 --- /dev/null +++ b/src/messenger/webim/libs/expand.php @@ -0,0 +1,74 @@ + 0; + } + return isset($page[$condition]) && $page[$condition]; +} + +function expand_condition($matches) { + global $page; + $value = check_condition($matches[2]) ^ ($matches[1] != 'if'); + if($value) { + return $matches[3]; + } else if($matches[4]) { + return substr($matches[4],strpos($matches[4],"}")+1); + } + return ""; +} + +function expand_var($matches) { + global $page, $webimroot, $errors; + $prefix = $matches[1]; + $var = $matches[2]; + if(!$prefix) { + if($var == 'webimroot') { + return $webimroot; + } else if($var == 'errors') { + if( isset($errors) && count($errors) > 0 ) { + $result = getlocal("errors.header"); + foreach( $errors as $e ) { + $result .= getlocal("errors.prefix").$e.getlocal("errors.suffix"); + } + $result .= getlocal("errors.footer"); + return $result; + } + } + + } else if($prefix == 'msg:') { + return getlocal($var); + } else if($prefix == 'form:') { + return $page["form$var"]; + } else if($prefix == 'page:') { + return $page["$var"]; + } + + return ""; +} + +function expandtext($text) { + $text = preg_replace_callback("/\\\${(if|ifnot):([\w\.]+)}(.*?)(\\\${else:\\2}.*?)?\\\${endif:\\2}/sm", "expand_condition", $text); + return preg_replace_callback("/\\\${(\w+:)?([\w\.]+)}/", "expand_var", $text); +} + +function expand($filename) { + start_html_output(); + $contents = file_get_contents($filename) or die("illegal template"); + echo expandtext($contents); +} + +?> \ No newline at end of file