site tranlation
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@216 c66351dc-e62f-0410-b875-e3a5c0b9693f
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 894 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/formline.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 43 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/free.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 49 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/icon_err.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 713 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/loginbg.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 68 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/logincrnlb.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 148 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/logincrnlt.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 199 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/logincrnrb.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 139 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/logincrnrt.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 142 B | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/save.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								site/admin/images/tablediv3.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 43 B | 
							
								
								
									
										337
									
								
								site/admin/styles.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,337 @@ | ||||
| a { | ||||
| 	text-decoration: underline; | ||||
| } | ||||
| 
 | ||||
| a:hover { | ||||
| 	text-decoration: none; | ||||
| } | ||||
| 
 | ||||
| ul { | ||||
| 	margin-bottom: 10px; | ||||
| 	margin-top: 10px; | ||||
| 	margin-left: 0px; | ||||
| } | ||||
| 
 | ||||
| li { | ||||
| 	margin-left: 18px; | ||||
| 	list-style-image: url(images/li.gif); | ||||
| } | ||||
| 
 | ||||
| li.error { | ||||
| 	margin-left: 15px; | ||||
| 	list-style-image: url(images/li_error.gif); | ||||
| } | ||||
| 
 | ||||
| li.grey { | ||||
| 	margin-left: 15px; | ||||
| 	list-style-image: url(images/li_grey.gif); | ||||
| } | ||||
| 
 | ||||
| form { | ||||
| 	margin-bottom: 0px; | ||||
| 	margin-top: 0px; | ||||
| } | ||||
| 
 | ||||
| .bgcn { | ||||
| 	background-position: center; | ||||
| 	background-repeat: no-repeat; | ||||
| } | ||||
| 
 | ||||
| .bgrn { | ||||
| 	background-position: right; | ||||
| 	background-repeat: no-repeat; | ||||
| } | ||||
| 
 | ||||
| .bgcy { | ||||
| 	background-position: center; | ||||
| 	background-repeat: repeat-y; | ||||
| } | ||||
| 
 | ||||
| .bgry { | ||||
| 	background-position: right; | ||||
| 	background-repeat: repeat-y; | ||||
| } | ||||
| 
 | ||||
| .bgly { | ||||
| 	background-position: left; | ||||
| 	background-repeat: repeat-y; | ||||
| } | ||||
| 
 | ||||
| .bgbx { | ||||
| 	background-position: bottom; | ||||
| 	background-repeat: repeat-x; | ||||
| } | ||||
| 
 | ||||
| .textform { | ||||
| 	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .textform a { | ||||
| 	color: #2971C1; | ||||
| } | ||||
| 
 | ||||
| .text { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 12px; | ||||
| 	color: #515151; | ||||
| } | ||||
| 
 | ||||
| .text h1 { | ||||
| 	margin-bottom: 15px; | ||||
| 	margin-top: 0px; | ||||
| 	color: #000000; | ||||
| 	font-size: 18px; | ||||
| 	font-weight: normal; | ||||
| 	line-height: 15px; | ||||
| } | ||||
| 
 | ||||
| .text h2 { | ||||
| 	margin-bottom: 15px; | ||||
| 	margin-top: 0px; | ||||
| 	color: #000000; | ||||
| 	font-size: 16px; | ||||
| } | ||||
| 
 | ||||
| .text h3 { | ||||
| 	margin-bottom: 15px; | ||||
| 	margin-top: 0px; | ||||
| 	color: #000000; | ||||
| 	font-size: 14px; | ||||
| } | ||||
| 
 | ||||
| .text h4 { | ||||
| 	margin-bottom: 15px; | ||||
| 	margin-top: 0px; | ||||
| 	color: #000000; | ||||
| 	font-size: 12px; | ||||
| } | ||||
| 
 | ||||
| .text span.date { | ||||
| 	font-size: 11px; | ||||
| 	color: #FFFFFF; | ||||
| 	font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .text span.sub { | ||||
| 	font-size: 11px; | ||||
| 	color: #676767; | ||||
| } | ||||
| 
 | ||||
| .text a.sublink { | ||||
| 	font-size: 11px; | ||||
| 	color: #666666; | ||||
| } | ||||
| 
 | ||||
| .text b.black { | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .text span.black { | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .block { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #515151; | ||||
| } | ||||
| 
 | ||||
| .block h1 { | ||||
| 	margin-bottom: 10px; | ||||
| 	font-size: 12px; | ||||
| 	color: #000000; | ||||
| 	font-weight: bold; | ||||
| 	line-height: 11px; | ||||
| } | ||||
| 
 | ||||
| .bann { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 21px; | ||||
| 	color: #000000; | ||||
| 	line-height: 18px; | ||||
| } | ||||
| 
 | ||||
| .bann span.text { | ||||
| 	font-size: 14px; | ||||
| 	color: #9F7800; | ||||
| } | ||||
| 
 | ||||
| .bannin { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 17px; | ||||
| 	color: #000000; | ||||
| 	line-height: 14px; | ||||
| 	font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .bannin span.text { | ||||
| 	font-size: 12px; | ||||
| 	color: #9F7800; | ||||
| 	font-weight: normal; | ||||
| 	white-space: nowrap; | ||||
| } | ||||
| 
 | ||||
| .bannform { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 12px; | ||||
| 	color: #766037; | ||||
| } | ||||
| 
 | ||||
| .menu { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 12px; | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .menu a { | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .smenu { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 12px; | ||||
| 	color: #165798; | ||||
| } | ||||
| 
 | ||||
| .smenu a { | ||||
| 	color: #165798; | ||||
| } | ||||
| 
 | ||||
| .table { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 12px; | ||||
| 	color: #515151; | ||||
| 	padding-left: 5px; | ||||
| 	padding-right: 15px; | ||||
| 	padding-top: 2px; | ||||
| 	padding-bottom: 2px; | ||||
| } | ||||
| 
 | ||||
| .table span.header { | ||||
| 	color: #FFFFFF; | ||||
| } | ||||
| 
 | ||||
| .table span.headergrey { | ||||
| 	color: #676767; | ||||
| } | ||||
| 
 | ||||
| .table a.black { | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .table span.black { | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .table a.blocked { | ||||
| 	color: #e0a0a0; | ||||
| } | ||||
| 
 | ||||
| .address { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 12px; | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .address a { | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .phone { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 12px; | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .phone span.number { | ||||
| 	font-size: 17px; | ||||
| 	color: #3D79AD; | ||||
| 	font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| td.formauth { | ||||
| 	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #000000; | ||||
| 	padding-left: 0px; | ||||
| } | ||||
| 
 | ||||
| td.formauth span { | ||||
| 	color: #474747; | ||||
| } | ||||
| 
 | ||||
| td.formauth span.formdescr { | ||||
| 	font-size: 10px; | ||||
| 	color: #676767; | ||||
| } | ||||
| 
 | ||||
| .formauth { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #676767; | ||||
| } | ||||
| 
 | ||||
| input.formauth { | ||||
| 	border: 1px solid #878787; | ||||
| } | ||||
| 
 | ||||
| textarea.formauth { | ||||
| 	border: 1px solid #878787; | ||||
| 	overflow: auto; | ||||
| } | ||||
| 
 | ||||
| .submit a { | ||||
| 	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #000000; | ||||
| 	text-decoration: none; | ||||
| } | ||||
| 
 | ||||
| .perpage { | ||||
| 	font-family: Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #676767; | ||||
| } | ||||
| 
 | ||||
| input.submit { | ||||
| 	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #000000; | ||||
| 	background: transparent; | ||||
| 	background-image: url(images/submitbg.gif); | ||||
| 	height: 33px; | ||||
| 	cursor: hand; | ||||
| 	border: none; | ||||
| } | ||||
| 
 | ||||
| .cal { | ||||
| 	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; | ||||
| 	font-size: 11px; | ||||
| 	color: #515151; | ||||
| } | ||||
| 
 | ||||
| .cal a { | ||||
| 	color: #515151; | ||||
| 	text-decoration: none; | ||||
| } | ||||
| 
 | ||||
| .cal span { | ||||
| 	color: #B70606; | ||||
| } | ||||
| 
 | ||||
| .cal b { | ||||
| 	color: #000000; | ||||
| } | ||||
| 
 | ||||
| .firstmessage a { | ||||
| 	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; | ||||
| 	font-size: 10px; | ||||
| 	text-decoration: none; | ||||
| 	color: #6a6a6a; | ||||
| } | ||||
| 
 | ||||
| .firstmessage a:hover { | ||||
| 	color: #8a6a6a; | ||||
| } | ||||
							
								
								
									
										141
									
								
								site/admin/translate.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,141 @@ | ||||
| <?php | ||||
| /* | ||||
|  * This file is part of Web Instant Messenger project. | ||||
|  * | ||||
|  * Copyright (c) 2005-2008 Web Messenger Community | ||||
|  * All rights reserved. This program and the accompanying materials | ||||
|  * are made available under the terms of the Eclipse Public License v1.0 | ||||
|  * which accompanies this distribution, and is available at | ||||
|  * http://www.eclipse.org/legal/epl-v10.html | ||||
|  * | ||||
|  * Contributors: | ||||
|  *    Evgeny Gryaznov - initial API and implementation | ||||
|  */ | ||||
| 
 | ||||
| require_once('../libs/common.php'); | ||||
| require_once('../libs/pagination.php'); | ||||
| 
 | ||||
| function getparam( $name ) {  | ||||
| 	global $webim_encoding;  | ||||
| 	if( isset($_POST[$name]) )  | ||||
| 		return myiconv(getoutputenc(), $webim_encoding, $_POST[$name]);  | ||||
| 	die("no ".$name." parameter");  | ||||
| }  | ||||
| 
 | ||||
| function form_value($key) { | ||||
|     global $page; | ||||
|     if( isset($page) && isset($page["form$key"]) ) | ||||
|             return $page["form$key"]; | ||||
|     return ""; | ||||
| } | ||||
| 
 | ||||
| function save_message($locale,$key,$value) { | ||||
| 	global $webim_encoding; | ||||
| 	$result = ""; | ||||
| 	$added = false; | ||||
| 	$current_encoding = $webim_encoding; | ||||
| 	$fp = fopen(dirname(__FILE__)."/../locales/$locale/properties", "r"); | ||||
| 	while (!feof($fp)) { | ||||
| 		$line = fgets($fp, 4096); | ||||
| 		$keyval = split("=", $line, 2 ); | ||||
| 		if( isset($keyval[1]) ) { | ||||
| 			if($keyval[0] == 'encoding') { | ||||
| 				$current_encoding = trim($keyval[1]); | ||||
| 			} else if(!$added && $keyval[0] == $key) { | ||||
| 				$line = "$key=".myiconv($webim_encoding, $current_encoding, str_replace("\r", "",str_replace("\n", "\\n",trim($value))))."\n"; | ||||
| 				$added = true; | ||||
| 			} | ||||
| 		} | ||||
| 		$result .= $line; | ||||
| 	} | ||||
| 	fclose($fp); | ||||
| 	if(!$added) { | ||||
| 		$result .= "$key=".myiconv($webim_encoding, $current_encoding, str_replace("\r", "",str_replace("\n", "\\n",trim($value))))."\n"; | ||||
| 	} | ||||
| 	$fp = fopen(dirname(__FILE__)."/../locales/$locale/properties", "w"); | ||||
| 	fwrite($fp, $result); | ||||
| 	fclose($fp); | ||||
| 	$fp = fopen(dirname(__FILE__)."/../locales/$locale/properties.log", "a"); | ||||
| 
 | ||||
| 	$extAddr = $_SERVER['REMOTE_ADDR']; | ||||
| 	if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && | ||||
| 	          $_SERVER['HTTP_X_FORWARDED_FOR'] != $_SERVER['REMOTE_ADDR']) { | ||||
| 		$extAddr = $_SERVER['REMOTE_ADDR'].' ('.$_SERVER['HTTP_X_FORWARDED_FOR'].')'; | ||||
| 	} | ||||
| 	$userbrowser = $_SERVER['HTTP_USER_AGENT']; | ||||
| 	$remoteHost = isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : $extAddr; | ||||
| 
 | ||||
| 	fwrite($fp,"# ".date(DATE_RFC822)." by $remoteHost using $userbrowser\n"); | ||||
| 	fwrite($fp,"$key=".myiconv($webim_encoding, $current_encoding, str_replace("\r", "",str_replace("\n", "\\n",trim($value))))."\n"); | ||||
| 	fclose($fp); | ||||
| } | ||||
| 
 | ||||
| $source = verifyparam("source", "/^[\w-]{2,5}$/", $default_locale); | ||||
| $target = verifyparam("target", "/^[\w-]{2,5}$/", "ru"); | ||||
| $stringid = verifyparam("key", "/^[_\.\w]+$/", ""); | ||||
| 
 | ||||
| if(!isset($messages[$source])) { | ||||
| 	load_messages($source); | ||||
| } | ||||
| $lang1 = $messages[$source]; | ||||
| if(!isset($messages[$target])) { | ||||
| 	load_messages($target); | ||||
| } | ||||
| $lang2 = $messages[$target]; | ||||
| 
 | ||||
| $errors = array(); | ||||
| $page = array( | ||||
| 	'lang1' => $source, | ||||
| 	'lang2' => $target, | ||||
| 	'title1' => isset($lang1["localeid"]) ? $lang1["localeid"] : $source, | ||||
| 	'title2' => isset($lang2["localeid"]) ? $lang2["localeid"] : $target | ||||
| ); | ||||
| 
 | ||||
| if($stringid) { | ||||
| 	$translation = isset($lang2[$stringid]) ? $lang2[$stringid] : ""; | ||||
| 	if(isset($_POST['translation'])) { | ||||
| 
 | ||||
| 		$translation = getparam('translation'); | ||||
| 
 | ||||
| 		if(!$translation) { | ||||
| 			$errors[] = no_field("form.field.translation"); | ||||
| 		} | ||||
| 
 | ||||
| 		if(count($errors) == 0) { | ||||
| 			save_message($target, $stringid, $translation); | ||||
| 
 | ||||
| 			$page['saved'] = true; | ||||
| 			start_html_output(); | ||||
| 			require('view/translate.php'); | ||||
| 			exit; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	$page['saved'] = false; | ||||
| 	$page['key'] = $stringid; | ||||
| 	$page['target'] = $target; | ||||
| 	$page['formoriginal'] = isset($lang1[$stringid]) ? $lang1[$stringid] : "<b><unknown></b>"; | ||||
| 	$page['formtranslation'] = $translation; | ||||
| 	start_html_output(); | ||||
| 	require('view/translate.php'); | ||||
| 	exit; | ||||
| } | ||||
| 
 | ||||
| $localesList = array(); | ||||
| foreach($available_locales as $loc) { | ||||
| 	$localesList[] = array("id" => $loc, "name" => getlocal_($loc, "names")); | ||||
| } | ||||
| 
 | ||||
| $result = array(); | ||||
| $allkeys = array_keys($lang1); | ||||
| foreach($allkeys as $key) { | ||||
| 	$result[] = array('id' => $key, 'l1' => $lang1[$key], 'l2' => (isset($lang2[$key]) ? $lang2[$key] : "<font color=\"#c13030\"><b>absent</b></font>") ); | ||||
| } | ||||
| setup_pagination($result,100); | ||||
| 
 | ||||
| $page['formtarget'] = $target; | ||||
| $page['formsource'] = $source; | ||||
| $page['availableLocales'] = $localesList; | ||||
| start_html_output(); | ||||
| require('view/translatelist.php'); | ||||
| ?>
 | ||||
							
								
								
									
										1
									
								
								site/admin/view/.htaccess
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | ||||
| Deny from all | ||||
							
								
								
									
										115
									
								
								site/admin/view/translate.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,115 @@ | ||||
| <?php | ||||
| /* | ||||
|  * This file is part of Web Instant Messenger project. | ||||
|  * | ||||
|  * Copyright (c) 2005-2008 Web Messenger Community | ||||
|  * All rights reserved. This program and the accompanying materials | ||||
|  * are made available under the terms of the Eclipse Public License v1.0 | ||||
|  * which accompanies this distribution, and is available at | ||||
|  * http://www.eclipse.org/legal/epl-v10.html | ||||
|  * | ||||
|  * Contributors: | ||||
|  *    Evgeny Gryaznov - initial API and implementation | ||||
|  */ | ||||
| ?>
 | ||||
| <html> | ||||
| <head> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| <link rel="stylesheet" type="text/css" media="all" href="<?php echo $siteroot ?>/admin/styles.css" /> | ||||
| 
 | ||||
| 
 | ||||
| <link rel="shortcut icon" href="<?php echo $siteroot ?>/admin/images/favicon.ico" type="image/x-icon"/> | ||||
| <title> | ||||
| 	Translate | ||||
| </title> | ||||
| </head> | ||||
| 
 | ||||
| <body bgcolor="#FFFFFF" text="#000000" link="#2971C1" vlink="#2971C1" alink="#2971C1"> | ||||
| 
 | ||||
| <table width="100%" cellpadding="2" cellspacing="0" border="0"> | ||||
| <tr> | ||||
| <td valign="top" class="text"> | ||||
| 
 | ||||
| 	<h1>Translate</h1> | ||||
| 
 | ||||
| 	<?php if( $page['saved'] ) { ?>
 | ||||
| 	Your translation is saved. | ||||
| 
 | ||||
| 	<script><!-- | ||||
| 		setTimeout( (function() { window.close(); }), 500 ); | ||||
| 	//--></script>
 | ||||
| <?php } ?>
 | ||||
| <?php if( !$page['saved'] ) { ?>
 | ||||
| 
 | ||||
| Enter you translation. | ||||
| <br/> | ||||
| <br/> | ||||
| 
 | ||||
| <?php if( isset($errors) && count($errors) > 0 ) { ?>
 | ||||
| 		<table cellspacing="0" cellpadding="0" border="0"> | ||||
| 		<tr> | ||||
| 	    <td valign="top"><img src='<?php echo $siteroot ?>/admin/images/icon_err.gif' width="40" height="40" border="0" alt="" /></td> | ||||
| 	    <td width="10"></td> | ||||
| 	    <td class="text"> | ||||
| 		    <?php	if( isset($errors) && count($errors) > 0 ) { | ||||
| 		print '<font color="#c13030"><b>Correct the mistakes:</b><br/><ul>'; | ||||
| 		foreach( $errors as $e ) { | ||||
| 			print '<li class="error">'; | ||||
| 			print $e; | ||||
| 			print '</li>'; | ||||
| 		} | ||||
| 		print '</ul></font>'; | ||||
| 	} ?>
 | ||||
| 
 | ||||
| 		</td> | ||||
| 		</tr> | ||||
| 		</table> | ||||
| 	<?php } ?>
 | ||||
| 
 | ||||
| <form name="translateForm" method="post" action="<?php echo $siteroot ?>/admin/translate.php"> | ||||
| <table cellspacing='0' cellpadding='0' border='0'><tr><td background='<?php echo $siteroot ?>/admin/images/loginbg.gif'><table cellspacing='0' cellpadding='0' border='0'><tr><td><img src='<?php echo $siteroot ?>/admin/images/logincrnlt.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $siteroot ?>/admin/images/logincrnrt.gif' width='16' height='16' border='0' alt=''></td></tr><tr><td></td><td align='center'><table border='0' cellspacing='0' cellpadding='0'> | ||||
| 	<tr> | ||||
| 		<td colspan="3" class="formauth"><?php echo $page['title1'] ?></td>
 | ||||
| 	</tr> | ||||
| 	<tr><td colspan="3" height="2"></td></tr> | ||||
| 	<tr> | ||||
| 		<td colspan="3"> | ||||
| 			<textarea name="original" tabindex="0" cols="80" rows="5" style="border:1px solid #878787; overflow:auto"><?php echo $page['formoriginal'] ?></textarea>
 | ||||
| 		</td> | ||||
| 	</tr> | ||||
| 	<tr><td colspan="3" height="5"></td></tr> | ||||
| 
 | ||||
| 	<tr> | ||||
| 		<td colspan="3" class="formauth"><?php echo $page['title2'] ?></td>
 | ||||
| 	</tr> | ||||
| 	<tr><td colspan="3" height="2"></td></tr> | ||||
| 	<tr> | ||||
| 		<td colspan="3"> | ||||
| 			<textarea name="translation" tabindex="0" cols="80" rows="5" style="border:1px solid #878787; overflow:auto"><?php echo $page['formtranslation'] ?></textarea>
 | ||||
| 		</td> | ||||
| 	</tr> | ||||
| 	<tr><td colspan="3" height="5"></td></tr> | ||||
| 
 | ||||
| 	<tr><td colspan='3' height='20'></td></tr><tr><td colspan='3' background='<?php echo $siteroot ?>/admin/images/formline.gif'><img src='<?php echo $siteroot ?>/admin/images/formline.gif' width='1' height='2' border='0' alt=''></td></tr><tr><td colspan='3' height='10'></td></tr> | ||||
| 
 | ||||
| 	<tr> | ||||
| 		<td class="formauth"> | ||||
| 		<input type="hidden" name="key" value="<?php echo $page['key'] ?>"/> | ||||
| 		<input type="hidden" name="target" value="<?php echo $page['target'] ?>"/> | ||||
| 		<input type="image" name="" src='<?php echo $siteroot ?>/admin/images/save.gif' border="0" alt='Save'/></td> | ||||
| 		<td></td> | ||||
| 		<td></td> | ||||
| 	</tr> | ||||
| </table></td><td></td></tr><tr><td><img src='<?php echo $siteroot ?>/admin/images/logincrnlb.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $siteroot ?>/admin/images/logincrnrb.gif' width='16' height='16' border='0' alt=''></td></tr></table></td></tr></table> | ||||
| </form> | ||||
| <?php } ?>
 | ||||
| 
 | ||||
| </td> | ||||
| </tr> | ||||
| </table> | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
| 
 | ||||
							
								
								
									
										93
									
								
								site/admin/view/translatelist.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,93 @@ | ||||
| <?php | ||||
| /* | ||||
|  * This file is part of Web Instant Messenger project. | ||||
|  * | ||||
|  * Copyright (c) 2005-2008 Web Messenger Community | ||||
|  * All rights reserved. This program and the accompanying materials | ||||
|  * are made available under the terms of the Eclipse Public License v1.0 | ||||
|  * which accompanies this distribution, and is available at | ||||
|  * http://www.eclipse.org/legal/epl-v10.html | ||||
|  * | ||||
|  * Contributors: | ||||
|  *    Evgeny Gryaznov - initial API and implementation | ||||
|  */ | ||||
| ?>
 | ||||
| <html> | ||||
| <head> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| <link rel="stylesheet" type="text/css" media="all" href="<?php echo $siteroot ?>/admin/styles.css" /> | ||||
| 
 | ||||
| 
 | ||||
| <link rel="shortcut icon" href="<?php echo $siteroot ?>/admin/images/favicon.ico" type="image/x-icon"/> | ||||
| <title> | ||||
| 	Translate | ||||
| </title> | ||||
| </head> | ||||
| 
 | ||||
| <body bgcolor="#FFFFFF" text="#000000" link="#2971C1" vlink="#2971C1" alink="#2971C1"> | ||||
| 
 | ||||
| <table width="100%" cellpadding="2" cellspacing="0" border="0"> | ||||
| <tr> | ||||
| <td valign="top" class="text"> | ||||
| 
 | ||||
| 	<h1>Translate</h1> | ||||
| 
 | ||||
| 	If you don't like the translation, please send us an update. | ||||
| <br /> | ||||
| <br /> | ||||
| 
 | ||||
| <form name="translateForm" method="get" action="<?php echo $siteroot ?>/admin/translate.php"> | ||||
| <table cellspacing='0' cellpadding='0' border='0'><tr><td background='<?php echo $siteroot ?>/admin/images/loginbg.gif'><table cellspacing='0' cellpadding='0' border='0'><tr><td><img src='<?php echo $siteroot ?>/admin/images/logincrnlt.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $siteroot ?>/admin/images/logincrnrt.gif' width='16' height='16' border='0' alt=''></td></tr><tr><td></td><td align='center'><table border='0' cellspacing='0' cellpadding='0'> | ||||
| 	<tr> | ||||
| 		<td class="formauth" colspan="3"> | ||||
| 			<select name="source" onchange="this.form.submit();"><?php foreach($page['availableLocales'] as $k) { echo "<option value=\"".$k["id"]."\"".($k["id"] == form_value("source") ? " selected=\"selected\"" : "").">".$k["name"]."</option>"; } ?></select>
 | ||||
| 			=> | ||||
| 			<select name="target" onchange="this.form.submit();"><?php foreach($page['availableLocales'] as $k) { echo "<option value=\"".$k["id"]."\"".($k["id"] == form_value("target") ? " selected=\"selected\"" : "").">".$k["name"]."</option>"; } ?></select>
 | ||||
| 		</td> | ||||
| 	</tr> | ||||
| </table></td><td></td></tr><tr><td><img src='<?php echo $siteroot ?>/admin/images/logincrnlb.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $siteroot ?>/admin/images/logincrnrb.gif' width='16' height='16' border='0' alt=''></td></tr></table></td></tr></table> | ||||
| </form> | ||||
| <br/> | ||||
| <?php if( $page['pagination'] && $page['pagination.items'] ) { ?>
 | ||||
| 	<table cellpadding="0" cellspacing="0" border="0" width="100%"> | ||||
| 		<tr> | ||||
| 			<td class='table' bgcolor='#276db8' height='30'><span class='header'>Key</span></td><td width='3'></td> | ||||
| 			<td class='table' bgcolor='#276db8' height='30'width="40%"><span class='header'><?php echo topage($page['title1']) ?></span></td><td width='3'></td>
 | ||||
| 			<td class='table' bgcolor='#276db8' height='30'width="40%"><span class='header'><?php echo topage($page['title2']) ?></span></td>
 | ||||
| 		</tr> | ||||
| 		<?php foreach( $page['pagination.items'] as $localstr ) { ?>
 | ||||
| 			<tr> | ||||
| 				<td height='20' class='table'> | ||||
| 					<a href="<?php echo $siteroot ?>/admin/translate.php?source=<?php echo $page['lang1'] ?>&target=<?php echo $page['lang2'] ?>&key=<?php echo $localstr['id'] ?>" target="_blank" onclick="this.newWindow = window.open('<?php echo $siteroot ?>/admin/translate.php?source=<?php echo $page['lang1'] ?>&target=<?php echo $page['lang2'] ?>&key=<?php echo $localstr['id'] ?>', '', 'toolbar=0,scrollbars=1,location=0,status=1,menubar=0,width=640,height=430,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;"><?php echo topage($localstr['id']) ?></a>
 | ||||
| 				</td><td background='<?php echo $siteroot ?>/admin/images/tablediv3.gif'><img width='3' height='1' border='0' alt='' src='<?php echo $siteroot ?>/admin/images/free.gif'></td> | ||||
| 				<td height='20' class='table'> | ||||
| 					<?php echo topage($localstr['l1']) ?>
 | ||||
| 				</td><td background='<?php echo $siteroot ?>/admin/images/tablediv3.gif'><img width='3' height='1' border='0' alt='' src='<?php echo $siteroot ?>/admin/images/free.gif'></td> | ||||
| 				<td height='20' class='table'> | ||||
| 					<?php echo topage($localstr['l2']) ?>
 | ||||
| 				</td> | ||||
| 			</tr> | ||||
| 			<tr><td height='2' colspan='9'></td></tr><tr><td bgcolor='#e1e1e1' colspan='9'><img width='1' height='1' border='0' alt='' src='<?php echo $siteroot ?>/admin/images/free.gif'></td></tr><tr><td height='2' colspan='9'></td></tr> | ||||
| 		<?php } ?>
 | ||||
| 	</table> | ||||
| 	<br /> | ||||
| 	<?php echo generate_pagination($page['pagination']) ?>
 | ||||
| <?php } ?>
 | ||||
| <?php if( $page['pagination'] && !$page['pagination.items'] ) { ?>
 | ||||
| 	<br/><br/> | ||||
| 	<table cellspacing='0' cellpadding='0' border='0'><tr><td background='<?php echo $siteroot ?>/admin/images/loginbg.gif'><table cellspacing='0' cellpadding='0' border='0'><tr><td><img src='<?php echo $siteroot ?>/admin/images/logincrnlt.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $siteroot ?>/admin/images/logincrnrt.gif' width='16' height='16' border='0' alt=''></td></tr><tr><td></td><td align='center'><table border='0' cellspacing='0' cellpadding='0'> | ||||
| 		<span class="table"> | ||||
| 			No items. | ||||
| 		</span> | ||||
| 	</table></td><td></td></tr><tr><td><img src='<?php echo $siteroot ?>/admin/images/logincrnlb.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $siteroot ?>/admin/images/logincrnrb.gif' width='16' height='16' border='0' alt=''></td></tr></table></td></tr></table> | ||||
| <?php } ?>
 | ||||
| 
 | ||||
| </td> | ||||
| </tr> | ||||
| </table> | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
| 
 | ||||
| @ -1,14 +1,27 @@ | ||||
| <?php  | ||||
| $page = 'demo'; | ||||
| 
 | ||||
| require_once('libs/common.php'); | ||||
| start_html_output(); | ||||
| require_once('inc/header.i'); | ||||
| require_once('inc/menu.i'); | ||||
| ?>
 | ||||
| 
 | ||||
| <div id="container"> | ||||
| <div id="content"> | ||||
| <h3>DEMO</h3> | ||||
| <p>Sorry, demo is not available yet.</p> | ||||
| <h3><?php echo getlocal("demo.title") ?></h3>
 | ||||
| <p> | ||||
| 
 | ||||
| <?php echo getlocal("demo.click") ?><br/>
 | ||||
| <br/> | ||||
| <!-- webim button --><a href="/webim/client.php?locale=<?php echo $current_locale ?>" target="_blank" onclick="if(navigator.userAgent.toLowerCase().indexOf('opera') != -1 && window.event.preventDefault) window.event.preventDefault();this.newWindow = window.open('/webim/client.php?locale=<?php echo $current_locale ?>', 'webim', 'toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width=640,height=480,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;"><img src="/webim/button.php?image=webim&lang=<?php echo $current_locale ?>" border="0" width="163" height="61"/></a><!-- / webim button --> | ||||
| <br/> | ||||
| <br/> | ||||
| 
 | ||||
| <?php echo getlocal("demo.login") ?><br/><br/>
 | ||||
| 
 | ||||
| <a href="/webim/"><?php echo getlocal("demo.application") ?></a>
 | ||||
| 
 | ||||
| </p> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
|  | ||||
| @ -1,20 +1,31 @@ | ||||
| <?php  | ||||
| $page = 'downl'; | ||||
| 
 | ||||
| require_once('libs/common.php'); | ||||
| start_html_output(); | ||||
| require_once('inc/header.i'); | ||||
| require_once('inc/menu.i'); | ||||
| ?>
 | ||||
| 
 | ||||
| <div id="container"> | ||||
| <div id="content"> | ||||
| <h3>Latest release</h3> | ||||
| <h3><?php echo getlocal("downl.title") ?></h3>
 | ||||
| 
 | ||||
| <div id="downl"> | ||||
| 
 | ||||
| <?php echo getlocal("downl.release") ?><br/>
 | ||||
| <a href="http://prdownloads.sourceforge.net/webim/webim142.zip?download"> | ||||
| 1.4.2, October 6, 2008 | ||||
| </a> | ||||
| </div> | ||||
| 
 | ||||
| <br/> | ||||
| <br/> | ||||
| <?php echo getlocal("downl.nightly") ?><br/>
 | ||||
| <a href="http://openwebim.org/download/webim150b1.zip"> | ||||
| 1.5.0 beta 1, November 28, 2008 | ||||
| </a> | ||||
| 
 | ||||
| 
 | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| <?php  | ||||
| $page = 'feat'; | ||||
| 
 | ||||
| require_once('libs/common.php'); | ||||
| start_html_output(); | ||||
| require_once('inc/header.i'); | ||||
| require_once('inc/menu.i'); | ||||
| ?>
 | ||||
| @ -8,64 +9,35 @@ require_once('inc/menu.i'); | ||||
| <div id="container"> | ||||
| <div id="content"> | ||||
| <a name='price'></a> | ||||
| <h3>Pricing</h3> | ||||
| <ul> | ||||
| <li>Open-source code, absolutely free | ||||
| <li>Eclipse Public License 1.0 | ||||
| </ul> | ||||
| <h3><?php echo getlocal("features.price.title") ?></h3>
 | ||||
| <?php echo getlocal("features.price") ?>
 | ||||
| 
 | ||||
| <a name='main'></a> | ||||
| <h3>Main features</h3> | ||||
| <ul> | ||||
| <li>Chat button for email signatures | ||||
| <li>Differing buttons on same website | ||||
| </ul> | ||||
| <h3><?php echo getlocal("features.main.title") ?></h3>
 | ||||
| <?php echo getlocal("features.main") ?>
 | ||||
| 
 | ||||
| 
 | ||||
| <a name='chat'></a> | ||||
| <h3>Chat window</h3> | ||||
| <ul> | ||||
| <li>Agent and visitor "Typing Indicator" | ||||
| <li>Agent photo | ||||
| <li>Chat transcript emails | ||||
| <li>Sound and Visual alerts | ||||
| <li>"Leave a message" when you are away | ||||
| <li>Customize chat with your Logo, Name etc. | ||||
| <li>Unicode support for multiple languages | ||||
| <li>Quickly convert text to hyperlinks in chat | ||||
| <li>Not blocked by pop-up blockers | ||||
| </ul> | ||||
| <h3><?php echo getlocal("features.chat.title") ?></h3>
 | ||||
| <?php echo getlocal("features.chat") ?>
 | ||||
| 
 | ||||
| <a name='operator'></a> | ||||
| <h3>Operator abilites</h3> | ||||
| <ul> | ||||
| <li>Web-based Operator Console | ||||
| <li>Canned messages for speed and consistency | ||||
| <li>Chat conversation history with search | ||||
| <li>Linking to previous visits, instant access to previous chats | ||||
| <li>Reassign/Transfer chat ownership | ||||
| <li>Mark/Highlight nuisance visitors | ||||
| </ul> | ||||
| <h3><?php echo getlocal("features.operator.title") ?></h3>
 | ||||
| <?php echo getlocal("features.operator") ?>
 | ||||
| 
 | ||||
| <a name='next'></a> | ||||
| <h3>Nearest future (not ready yet)</h3> | ||||
| <ul> | ||||
| <li>Operator to Operator IM (Discussion) | ||||
| <li>Push Web Pages | ||||
| <li>SSL Secured Chat | ||||
| <li>Pre-Chat Questionnaire | ||||
| <li>Multiple Departments | ||||
| <li>Define Initial Chat Window Size | ||||
| <li>Co-Browse to View Visitor's Location on Your Site | ||||
| <li>Dynamic Chat Icons | ||||
| </ul> | ||||
| <h3><?php echo getlocal("features.next.title") ?></h3>
 | ||||
| <?php echo getlocal("features.next") ?>
 | ||||
| 
 | ||||
| </div> | ||||
| 
 | ||||
| <div id="side"> | ||||
| <p>Content:</p> | ||||
| <p><?php echo getlocal("features.content.head") ?></p>
 | ||||
| <p> | ||||
| <a href="#price">pricing</a><br/> | ||||
| <a href="#main">main features</a><br/> | ||||
| <a href="#chat">chat window</a><br/> | ||||
| <a href="#operator">operator abilities</a><br/> | ||||
| <a href="#price"><?php echo strtolower(getlocal("features.price.title")) ?></a><br/>
 | ||||
| <a href="#main"><?php echo strtolower(getlocal("features.main.title")) ?></a><br/>
 | ||||
| <a href="#chat"><?php echo strtolower(getlocal("features.chat.title")) ?></a><br/>
 | ||||
| <a href="#operator"><?php echo strtolower(getlocal("features.operator.title")) ?></a><br/>
 | ||||
| <a href="#next">what is coming next</a><br/> | ||||
| </p> | ||||
| </div> | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> | ||||
| <html> | ||||
| <head> | ||||
| <title>Web Messenger</title> | ||||
| <title><?php echo getlocal("title") ?></title> | ||||
| <link rel="stylesheet" type="text/css" href="styles.css"> | ||||
| <link rel="stylesheet" type="text/css" href="niftyCorners.css"> | ||||
| <script type="text/javascript" src="niftycube.js"></script> | ||||
|  | ||||
| @ -1,14 +1,14 @@ | ||||
| <div id="header"> | ||||
| <div id="title"> | ||||
| 	<h1><strong>Web Messenger</strong> — open-source live support software</h1> | ||||
| 	<big>allows visitors of your site to chat with your operators</big> | ||||
| 	<h1><?php echo getlocal("head.name") ?></h1> | ||||
| 	<big><?php echo getlocal("head.descr") ?></big> | ||||
| </div> | ||||
| <div id="menu"> | ||||
|     <ul id="nav"> | ||||
|         <li id="home"<?php echo $page == 'home' ? ' class="activelink"' : '' ?>><a href="index.php">home</a></li> | ||||
|         <li id="who"<?php echo $page == 'feat' ? ' class="activelink"' : '' ?>><a href="features.php">features</a></li> | ||||
|         <li id="prod"<?php echo $page == 'demo' ? ' class="activelink"' : '' ?>><a href="demo.php">demo</a></li> | ||||
|         <li id="serv"<?php echo $page == 'downl' ? ' class="activelink"' : '' ?>><a href="download.php">download</a></li> | ||||
|         <li id="home"<?php echo $page == 'home' ? ' class="activelink"' : '' ?>><a href="index.php"><?php echo getlocal("menu.home") ?></a></li> | ||||
|         <li id="who"<?php echo $page == 'feat' ? ' class="activelink"' : '' ?>><a href="features.php"><?php echo getlocal("menu.features") ?></a></li> | ||||
|         <li id="prod"<?php echo $page == 'demo' ? ' class="activelink"' : '' ?>><a href="demo.php"><?php echo getlocal("menu.demo") ?></a></li> | ||||
|         <li id="serv"<?php echo $page == 'downl' ? ' class="activelink"' : '' ?>><a href="download.php"><?php echo getlocal("menu.download") ?></a></li> | ||||
|     </ul> | ||||
| </div> | ||||
| <div id="logo"> | ||||
|  | ||||
| @ -1,25 +1,26 @@ | ||||
| <?php  | ||||
| $page = 'home'; | ||||
| 
 | ||||
| require_once('libs/common.php'); | ||||
| start_html_output(); | ||||
| require_once('inc/header.i'); | ||||
| require_once('inc/menu.i'); | ||||
| ?>
 | ||||
| 
 | ||||
| <div id="container"> | ||||
| <div id="content"> | ||||
| <h3>What is Web Messenger?</h3> | ||||
| <p>"Web Messenger" - is unique software allowing visitors of your site to chat with your operators.</p> | ||||
| <h3><?php echo getlocal("index.whatis.title") ?></h3>
 | ||||
| <p><?php echo getlocal("index.whatis") ?></p>
 | ||||
| 
 | ||||
| <h3>Why should I use Web Messenger?</h3> | ||||
| <p>"Web Messenger" makes it easier to communicate with existing and potential clients. It will significantly increase conversion rates and online sales of your web site.</p> | ||||
| <h3><?php echo getlocal("index.why.title") ?></h3>
 | ||||
| <p><?php echo getlocal("index.why") ?></p>
 | ||||
| 
 | ||||
| <h3>How it works?</h3> | ||||
| <p>You should place the button of Web Messenger at your site. Your visitors click the button and chat with your operators who help them.</p> | ||||
| <h3><?php echo getlocal("index.how.title") ?></h3>
 | ||||
| <p><?php echo getlocal("index.how") ?></p>
 | ||||
| 
 | ||||
| <h3>License</h3> | ||||
| <p>This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0.</p> | ||||
| <h3><?php echo getlocal("index.license.title") ?></h3>
 | ||||
| <p><?php echo getlocal("index.license") ?></p>
 | ||||
| 
 | ||||
| <p>Project is hosted by SourceForge.</p> | ||||
| <p><?php echo getlocal("index.hosted") ?></p>
 | ||||
| 
 | ||||
| </div> | ||||
| </div> | ||||
|  | ||||
							
								
								
									
										1
									
								
								site/libs/.htaccess
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | ||||
| Deny from all | ||||
							
								
								
									
										200
									
								
								site/libs/common.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,200 @@ | ||||
| <?php | ||||
| 
 | ||||
| $available_locales = array("en", "ru"); | ||||
| $default_locale = "en"; | ||||
| $siteroot = "/site"; | ||||
| $site_encoding = "utf-8";  | ||||
| 
 | ||||
| function myiconv($in_enc, $out_enc, $string) { | ||||
| 	if($in_enc == $out_enc ) { | ||||
| 		return $string; | ||||
| 	} | ||||
| 	if( function_exists('iconv') ) { | ||||
| 		$converted = @iconv($in_enc, $out_enc, $string); | ||||
| 		if( $converted !== FALSE ) { | ||||
| 			return $converted; | ||||
| 		} | ||||
| 	} | ||||
| 	return $string; // do not know how to convert
 | ||||
| } | ||||
| 
 | ||||
| function verifyparam( $name, $regexp, $default = null ) { | ||||
|         if( isset( $_GET[$name] ) ) { | ||||
|                 $val = $_GET[$name]; | ||||
|                 if( preg_match( $regexp, $val ) ) | ||||
|                         return $val; | ||||
| 
 | ||||
|         } else if( isset( $_POST[$name] ) ) { | ||||
|                 $val = $_POST[$name]; | ||||
|                 if( preg_match( $regexp, $val ) ) | ||||
|                         return $val; | ||||
| 
 | ||||
|         } else { | ||||
|                 if( isset( $default ) ) | ||||
|                         return $default; | ||||
|         } | ||||
|         echo "<html><head></head><body>Wrong parameter used or absent: ".$name."</body></html>"; | ||||
|         exit; | ||||
| } | ||||
| 
 | ||||
| function get_user_locale() { | ||||
| 	global $available_locales, $default_locale; | ||||
| 
 | ||||
| 	if( isset($_COOKIE['webim_locale']) ) { | ||||
| 		$requested_lang = $_COOKIE['webim_locale']; | ||||
| 		if( in_array($requested_lang,$available_locales) ) | ||||
| 			return $requested_lang; | ||||
| 	} | ||||
| 
 | ||||
| 	if( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) { | ||||
| 		$requested_langs = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']); | ||||
| 		foreach( $requested_langs as $requested_lang) { | ||||
| 			if( strlen($requested_lang) > 2 ) | ||||
| 				$requested_lang = substr($requested_lang,0,2); | ||||
| 
 | ||||
| 			if( in_array($requested_lang,$available_locales) ) | ||||
| 				return $requested_lang; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if( in_array($default_locale,$available_locales) ) | ||||
| 		return $default_locale; | ||||
| 
 | ||||
| 	return 'en'; | ||||
| } | ||||
| 
 | ||||
| function get_locale() { | ||||
| 	global $available_locales, $siteroot; | ||||
| 
 | ||||
| 	$locale = verifyparam("locale", "/^[\w-]{2,5}$/", ""); | ||||
| 
 | ||||
| 	if( $locale && in_array($locale,$available_locales) ) { | ||||
| 		$_SESSION['locale'] = $locale; | ||||
| 		setcookie('webim_locale', $locale, time()+60*60*24*1000, "$siteroot/"); | ||||
| 	} else if( isset($_SESSION['locale']) ){ | ||||
| 		$locale = $_SESSION['locale']; | ||||
| 	} | ||||
| 
 | ||||
| 	if( !$locale || !in_array($locale,$available_locales) ) | ||||
| 		$locale = get_user_locale(); | ||||
| 	return $locale; | ||||
| } | ||||
| 
 | ||||
| $current_locale = get_locale(); | ||||
| setlocale(LC_TIME, $current_locale); | ||||
| $messages = array(); | ||||
| $output_encoding = array(); | ||||
| 
 | ||||
| function get_locale_links($href) { | ||||
| 	global $available_locales, $current_locale; | ||||
| 	$localeLinks = ""; | ||||
| 	foreach($available_locales as $k) { | ||||
| 		if( strlen($localeLinks) > 0 ) | ||||
| 			$localeLinks .= " • "; | ||||
| 		if( $k == $current_locale ) | ||||
| 			$localeLinks .= getlocal_($k, "names"); | ||||
| 		else | ||||
| 			$localeLinks .= "<a href=\"$href?locale=$k\">".getlocal_($k, "names")."</a>";
 | ||||
| 	} | ||||
| 	return $localeLinks; | ||||
| } | ||||
| 
 | ||||
| function load_messages($locale) { | ||||
| 	global $messages, $site_encoding, $output_encoding; | ||||
| 	$hash = array(); | ||||
| 	$current_encoding = $site_encoding; | ||||
| 	$fp = @fopen(dirname(__FILE__)."/../locales/$locale/properties", "r"); | ||||
| 	if(!$fp) { die("wrong locale"); } | ||||
| 	while (!feof($fp)) { | ||||
| 		$line = fgets($fp, 4096); | ||||
| 		$keyval = split("=", $line, 2 ); | ||||
| 		if( isset($keyval[1]) ) { | ||||
| 			if($keyval[0] == 'encoding') { | ||||
| 				$current_encoding = trim($keyval[1]); | ||||
| 			} else if($keyval[0] == 'output_encoding') { | ||||
| 				$output_encoding[$locale] = trim($keyval[1]); | ||||
| 			} else if( $current_encoding == $site_encoding ) { | ||||
| 				$hash[$keyval[0]] = str_replace("\\n", "\n",trim($keyval[1])); | ||||
| 			} else { | ||||
| 				$hash[$keyval[0]] = myiconv($current_encoding, $site_encoding, str_replace("\\n", "\n",trim($keyval[1]))); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	fclose($fp); | ||||
| 	$messages[$locale] = $hash; | ||||
| } | ||||
| 
 | ||||
| function getoutputenc() { | ||||
| 	global $current_locale, $output_encoding, $site_encoding, $messages; | ||||
| 	if(!isset($messages[$current_locale])) | ||||
| 		load_messages($current_locale); | ||||
| 	return isset($output_encoding[$current_locale]) ? $output_encoding[$current_locale] : $site_encoding; | ||||
| } | ||||
| 
 | ||||
| function getstring_($text,$locale) { | ||||
| 	global $messages; | ||||
| 	if(!isset($messages[$locale])) | ||||
| 		load_messages($locale); | ||||
| 
 | ||||
| 	$localized = $messages[$locale]; | ||||
| 	if( isset($localized[$text]) ) | ||||
| 		return $localized[$text]; | ||||
| 
 | ||||
| 	return "!".$text; | ||||
| } | ||||
| 
 | ||||
| function getstring($text) { | ||||
| 	global $current_locale; | ||||
| 	return getstring_($text,$current_locale); | ||||
| } | ||||
| 
 | ||||
| function getlocal($text) { | ||||
| 	global $current_locale, $site_encoding; | ||||
| 	return myiconv($site_encoding,getoutputenc(), getstring_($text,$current_locale)); | ||||
| } | ||||
| 
 | ||||
| function getlocal_($text,$locale) { | ||||
| 	global $site_encoding; | ||||
| 	return myiconv($site_encoding,getoutputenc(), getstring_($text,$locale)); | ||||
| } | ||||
| 
 | ||||
| function topage($text) { | ||||
| 	global $site_encoding; | ||||
| 	return myiconv($site_encoding,getoutputenc(), $text); | ||||
| } | ||||
| 
 | ||||
| function getstring2_($text,$params,$locale) { | ||||
| 	$string = getstring_($text,$locale); | ||||
| 	for( $i = 0; $i < count($params); $i++ ) { | ||||
| 		$string = str_replace("{".$i."}", $params[$i], $string); | ||||
| 	} | ||||
| 	return $string; | ||||
| } | ||||
| 
 | ||||
| function getstring2($text,$params) { | ||||
| 	global $current_locale; | ||||
| 	return getstring2_($text,$params,$current_locale); | ||||
| } | ||||
| 
 | ||||
| function getlocal2($text,$params) { | ||||
| 	global $current_locale, $site_encoding; | ||||
| 	$string = myiconv($site_encoding,getoutputenc(), getstring_($text,$current_locale)); | ||||
| 	for( $i = 0; $i < count($params); $i++ ) { | ||||
| 		$string = str_replace("{".$i."}", $params[$i], $string); | ||||
| 	} | ||||
| 	return $string; | ||||
| } | ||||
| 
 | ||||
| function start_html_output() { | ||||
| 	$charset = getstring("output_charset"); | ||||
| 	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); | ||||
| 	header("Cache-Control: no-store, no-cache, must-revalidate"); | ||||
| 	header("Pragma: no-cache"); | ||||
| 	header("Content-type: text/html".(isset($charset)?"; charset=".$charset:"")); | ||||
| } | ||||
| 
 | ||||
| function div($a,$b) { | ||||
|     return ($a-($a % $b)) / $b; | ||||
| } | ||||
| 	 | ||||
| ?>
 | ||||
							
								
								
									
										98
									
								
								site/libs/pagination.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,98 @@ | ||||
| <?php | ||||
| /* | ||||
|  * This file is part of Web Instant Messenger project. | ||||
|  * | ||||
|  * Copyright (c) 2005-2008 Web Messenger Community | ||||
|  * All rights reserved. This program and the accompanying materials | ||||
|  * are made available under the terms of the Eclipse Public License v1.0 | ||||
|  * which accompanies this distribution, and is available at | ||||
|  * http://www.eclipse.org/legal/epl-v10.html | ||||
|  * | ||||
|  * Contributors: | ||||
|  *    Evgeny Gryaznov - initial API and implementation | ||||
|  */ | ||||
| 
 | ||||
| $pagination_spacing = "   "; | ||||
| $links_on_page = 5; | ||||
| 
 | ||||
| function generate_pagination_link($page,$title) { | ||||
| 	$lnk = $_SERVER['REQUEST_URI']; | ||||
| 	$href = preg_replace("/\?page=\d+\&/", "?", preg_replace("/\&page=\d+/", "", $lnk)); | ||||
| 	$href .= strstr($href,"?") ? "&page=$page" : "?page=$page"; | ||||
| 	return "<a href=\"$href\" class=\"pagelink\">$title</a>"; | ||||
| } | ||||
| 
 | ||||
| function generate_pagination_image($id) { | ||||
| 	global $webimroot; | ||||
| 	return "<img src=\"$webimroot/images/$id.gif\" border=\"0\"/>"; | ||||
| } | ||||
| 
 | ||||
| function setup_pagination($items,$default_items_per_page=15) { | ||||
| 	global $page; | ||||
| 
 | ||||
| 	if( $items ) { | ||||
| 		$items_per_page = verifyparam("items", "/^\d{1,3}$/", $default_items_per_page); | ||||
| 		if( $items_per_page < 2 ) | ||||
| 			$items_per_page = 2; | ||||
| 
 | ||||
| 		$total_pages = div(count($items) + $items_per_page - 1, $items_per_page); | ||||
| 		$curr_page = verifyparam("page", "/^\d{1,6}$/", 1); | ||||
| 
 | ||||
| 		if( $curr_page < 1 ) | ||||
| 			$curr_page = 1; | ||||
| 		if( $curr_page > $total_pages ) | ||||
| 			$curr_page = $total_pages; | ||||
| 
 | ||||
| 		$start_index = ($curr_page-1)*$items_per_page; | ||||
| 		$end_index = min($start_index+$items_per_page, count($items)); | ||||
| 		$page['pagination.items'] = array_slice($items, $start_index, $end_index-$start_index); | ||||
| 		$page['pagination'] = | ||||
| 			array(  "page" => $curr_page, "items" => $items_per_page, "total" => $total_pages, | ||||
| 					"count" => count($items), "start" => $start_index, "end" => $end_index ); | ||||
| 	} else { | ||||
| 		$page['pagination.items'] = false; | ||||
| 		$page['pagination'] = true; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| function setup_empty_pagination() { | ||||
| 	global $page; | ||||
| 	$page['pagination.items'] = false; | ||||
| 	$page['pagination'] = false; | ||||
| } | ||||
| 
 | ||||
| function generate_pagination($pagination) { | ||||
| 	global $pagination_spacing, $links_on_page; | ||||
| 	$result = getlocal2("tag.pagination.info", | ||||
| 		array($pagination['page'],$pagination['total'],$pagination['start']+1,$pagination['end'],$pagination['count']))."<br/>"; | ||||
| 
 | ||||
| 	if( $pagination['total'] > 1 ) { | ||||
| 		$result.="<br/><div class='pagination'>"; | ||||
| 		$curr_page = $pagination['page']; | ||||
| 
 | ||||
| 		$minPage = max( $curr_page - $links_on_page, 1 ); | ||||
| 		$maxPage = min( $curr_page + $links_on_page, $pagination['total'] ); | ||||
| 
 | ||||
| 		if( $curr_page > 1 ) { | ||||
| 			$result .= generate_pagination_link($curr_page-1, generate_pagination_image("prevpage")).$pagination_spacing; | ||||
| 		} | ||||
| 
 | ||||
| 		for($i = $minPage; $i <= $maxPage; $i++ ) { | ||||
| 			$title = abs($curr_page-$i) >= $links_on_page && $i != 1 ? "..." : $i; | ||||
| 			if( $i != $curr_page) | ||||
| 				$result .= generate_pagination_link($i, $title); | ||||
| 			else | ||||
| 				$result .= "<span class=\"pagecurrent\">$title</span>"; | ||||
| 			if( $i < $maxPage ) | ||||
| 				$result .= $pagination_spacing; | ||||
| 		} | ||||
| 
 | ||||
| 		if( $curr_page < $pagination['total'] ) { | ||||
| 			$result .= $pagination_spacing.generate_pagination_link($curr_page+1, generate_pagination_image("nextpage")); | ||||
| 		} | ||||
| 		$result.="</div>"; | ||||
| 	} | ||||
| 	return $result; | ||||
| } | ||||
| 
 | ||||
| ?>
 | ||||
							
								
								
									
										46
									
								
								site/locales/en/properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,46 @@ | ||||
| encoding=utf-8 | ||||
| output_charset=utf-8 | ||||
| output_encoding=utf-8 | ||||
| 
 | ||||
| title=Open Web Messenger | ||||
| head.name=<strong>Web Messenger</strong> — open-source live support software | ||||
| head.descr=allows visitors of your site to chat with your operators | ||||
| 
 | ||||
| menu.home=home | ||||
| menu.features=features | ||||
| menu.demo=demo | ||||
| menu.download=download | ||||
| 
 | ||||
| index.whatis.title=What is Web Messenger? | ||||
| index.whatis="Web Messenger" - is unique software allowing visitors of your site to chat with your operators. | ||||
| index.why.title=Why should I use Web Messenger? | ||||
| index.why="Web Messenger" makes it easier to communicate with existing and potential clients. It will significantly increase conversion rates and online sales of your web site. | ||||
| index.how.title=How it works? | ||||
| index.how=You should place the button of Web Messenger at your site. Your visitors click the button and chat with your operators who help them. | ||||
| index.license.title=License | ||||
| index.license=This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0. | ||||
| index.hosted=Project is hosted by SourceForge. | ||||
| 
 | ||||
| features.price.title=Pricing | ||||
| features.price=<ul><li>Open-source code, absolutely free\n<li>Eclipse Public License 1.0</ul> | ||||
| features.main.title=Main features | ||||
| features.main=<ul><li>Chat button for email signatures\n<li>Differing buttons on same website</ul> | ||||
| features.chat.title=Chat window | ||||
| features.chat=<ul>\n<li>Agent and visitor "Typing Indicator"\n<li>Agent photo\n<li>Chat transcript emails\n<li>Sound and Visual alerts\n<li>"Leave a message" when you are away\n<li>Customize chat with your Logo, Name etc.\n<li>Unicode support for multiple languages\n<li>Quickly convert text to hyperlinks in chat\n<li>Not blocked by pop-up blockers\n</ul> | ||||
| features.operator.title=Operator abilites | ||||
| features.operator=<ul>\n<li>Web-based Operator Console\n<li>Canned messages for speed and consistency\n<li>Chat conversation history with search\n<li>Linking to previous visits, instant access to previous chats\n<li>Reassign/Transfer chat ownership\n<li>Mark/Highlight nuisance visitors\n</ul> | ||||
| features.next.title=Nearest future (not ready yet) | ||||
| features.next=<ul>\n<li>Operator to Operator IM (Discussion)\n<li>Push Web Pages\n<li>SSL Secured Chat\n<li>Pre-Chat Questionnaire\n<li>Multiple Departments\n<li>Define Initial Chat Window Size\n<li>Co-Browse to View Visitor's Location on Your Site\n<li>Dynamic Chat Icons\n</ul> | ||||
| 
 | ||||
| features.content.head=Content: | ||||
| 
 | ||||
| demo.title=DEMO | ||||
| demo.click=Click this button: | ||||
| demo.login=And/or login as administrator here (no password is required) : | ||||
| demo.application=Web Messenger Application | ||||
| 
 | ||||
| downl.title=Latest | ||||
| downl.release=Release: | ||||
| downl.nightly=Nightly: | ||||
| 
 | ||||
| tag.pagination.info=Page {0} of {1}, {2}-{3} from {4} | ||||
							
								
								
									
										6
									
								
								site/locales/names/properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,6 @@ | ||||
| encoding=utf-8 | ||||
| 
 | ||||
| en=English | ||||
| fr=Français | ||||
| sp=Español | ||||
| ru=Russian | ||||
							
								
								
									
										36
									
								
								site/locales/ru/properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,36 @@ | ||||
| encoding=cp1251 | ||||
| output_charset=utf-8 | ||||
| output_encoding=utf-8 | ||||
| title=Open Веб Мессенджер | ||||
| head.name=<strong>Веб Мессенджер</strong> - бесплатное решение для онлайн поддержки | ||||
| menu.home=главная | ||||
| head.descr=позволяет посетителям вашего сайта легко общаться с вашими операторами | ||||
| menu.demo=демо | ||||
| menu.download=скачать | ||||
| index.whatis.title=Что такое Веб Мессенджер? | ||||
| index.license.title=Лицензия | ||||
| demo.click=Нажмите на эту кнопку: | ||||
| demo.application=Приложение Веб Мессенджер | ||||
| tag.pagination.info=Страница {0} из {1}, показаны {2}-{3} из {4} | ||||
| demo.login=И войдите в систему как администратор (пароль не требуется) : | ||||
| menu.features=возможности | ||||
| features.chat=<ul>\n<li>Уведомление о наборе текста собеседником\n<li>Фотография оператора в окне диалога\n<li>Возможность отправки истории диалога себе на email\n<li>Звуковые и визуальные оповещения\n<li>Возможность оставить сообщения при отсутствии операторов в онлайне\n<li>Кастомизация вашего логотипа и названия компании\n<li>Поддержка разных языков (Unicode)\n<li>Выделение ссылок в окне диалога с возможностью перехода\n<li>Всплывающее окно не блокируется большинством браузеров \n</ul> | ||||
| features.chat.title=Окно диалога | ||||
| features.main.title=Основные возможности | ||||
| features.main=<ul>\n<li>Возможность включить код кнопки в email рассылку\n<li>Отображение кнопки в зависимости от присутствия операторов\n</ul> | ||||
| features.operator.title=Возможности операторов | ||||
| features.operator=<ul>\n<li>Веб-интерфейс для обслуживания посетителей\n<li>Шаблоны для быстрого ответа\n<li>История сообщений и поиск по ней\n<li>Доступ к предыдущим диалогам с текущим посетителем из чата\n<li>Перенаправление посетителя другому оператору\n<li>Выделение нежелательных посетителей в списке\n</ul> | ||||
| features.price=<ul>\n<li>Открытый исходный код, свободное распространение\n<li>Eclipse Public License 1.0\n</ul> | ||||
| features.price.title=Стоимость | ||||
| index.license=В настоящее время Open Web Messenger выпускается под лицензией Eclipse Public License v1.0. | ||||
| index.hosted=Проект разрабатывается на сервере SourceForge.net. | ||||
| index.how.title=Как это работает? | ||||
| index.how=Вы размещаете предоставленную кнопку связи с оператором на вашем сайте. Ваши посетители получают возможность пообщаться с вашими операторами не устанавливая дополнительного ПО. | ||||
| index.whatis="Веб Мессенджер" - уникальное програмное обеспечение, позволяющее вашим посетителям общаться с операторами в режиме реального времени. | ||||
| index.why.title=Почему нужно использовать Веб Мессенджер? | ||||
| index.why=Веб Мессенджер упрощает взаимодействие с существующими и потенциальными клиентами. Он позволяет серьезно повысить онлайн продажи и улучшить отношение к вам ваших клиентов. | ||||
| demo.title=Демонстрация работы | ||||
| downl.release=Стабильная: | ||||
| downl.nightly=Промежуточная: | ||||
| features.content.head=Содержание: | ||||
| downl.title=Последние версии | ||||