<?php
header('Content-type: text/html; charset=utf-8');
// The following variables values must reflect your installation needs.
$aspell_prog = '"C:\Program Files\Aspell\bin\aspell.exe"'; // by FredCK (for Windows)
//$aspell_prog = 'aspell'; // by FredCK (for Linux)
$lang = 'en_US';
$aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt"; // by FredCK
$tempfiledir = "./";
$spellercss = '../spellerStyle.css'; // by FredCK
$word_win_src = '../wordWindow.js'; // by FredCK
$textinputs = $_POST['textinputs']; # array
$input_separator = "A";
# set the JavaScript variable to the submitted text.
# textinputs is an array, each element corresponding to the (url-encoded)
# value of the text control submitted for spell-checking
function print_textinputs_var() {
global $textinputs;
foreach( $textinputs as $key=>$val ) {
# $val = str_replace( "'", "%27", $val );
echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n";
}
}
# make declarations for the text input index
function print_textindex_decl( $text_input_idx ) {
echo "words[$text_input_idx] = [];\n";
echo "suggs[$text_input_idx] = [];\n";
}
# set an element of the JavaScript 'words' array to a misspelled word
function print_words_elem( $word, $index, $text_input_idx ) {
echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n";
}
# set an element of the JavaScript 'suggs' array to a list of suggestions
function print_suggs_elem( $suggs, $index, $text_input_idx ) {
echo "suggs[$text_input_idx][$index] = [";
foreach( $suggs as $key=>$val ) {
if( $val ) {
echo "'" . escape_quote( $val ) . "'";
if ( $key+1 < count( $suggs )) {
echo ", ";
}
}
}
echo "];\n";
}
# escape single quote
function escape_quote( $str ) {
return preg_replace ( "/'/", "\\'", $str );
}
# handle a server-side error.
function error_handler( $err ) {
echo "error = '" . preg_replace( "/['\\\\]/", "\\\\$0", $err ) . "';\n";
}
## get the list of misspelled words. Put the results in the javascript words array
## for each misspelled word, get suggestions and put in the javascript suggs array
function print_checker_results() {
global $aspell_prog;
global $aspell_opts;
global $tempfiledir;
global $textinputs;
global $input_separator;
$aspell_err = "";
# create temp file
$tempfile = tempnam( $tempfiledir, 'aspell_data_' );
# open temp file, add the submitted text.
if( $fh = fopen( $tempfile, 'w' )) {
for( $i = 0; $i < count( $textinputs ); $i++ ) {
$text = urldecode( $textinputs[$i] );
// Strip all tags for the text. (by FredCK - #339 / #681)
$text = preg_replace( "/<[^>]+>/", " ", $text ) ;
$lines = explode( "\n", $text );
fwrite ( $fh, "%\n" ); # exit terse mode
fwrite ( $fh, "^$input_separator\n" );
fwrite ( $fh, "!\n" ); # enter terse mode
foreach( $lines as $key=>$value ) {
# use carat on each line to escape possible aspell commands
fwrite( $fh, "^$value\n" );
}
}
fclose( $fh );
# exec aspell command - redirect STDERR to STDOUT
$cmd = "$aspell_prog $aspell_opts < $tempfile 2>&1";
if( $aspellret = shell_exec( $cmd )) {
$linesout = explode( "\n", $aspellret );
$index = 0;
$text_input_index = -1;
# parse each line of aspell return
foreach( $linesout as $key=>$val ) {
$chardesc = substr( $val, 0, 1 );
# if '&', then not in dictionary but has suggestions
# if '#', then not in dictionary and no suggestions
# if '*', then it is a delimiter between text inputs
# if '@' then version info
if( $chardesc == '&' || $chardesc == '#' ) {
$line = explode( " ", $val, 5 );
print_words_elem( $line[1], $index, $text_input_index );
if( isset( $line[4] )) {
$suggs = explode( ", ", $line[4] );
} else {
$suggs = array();
}
print_suggs_elem( $suggs, $index, $text_input_index );
$index++;
} elseif( $chardesc == '*' ) {
$text_input_index++;
print_textindex_decl( $text_input_index );
$index = 0;
} elseif( $chardesc != '@' && $chardesc != "" ) {
# assume this is error output
$aspell_err .= $val;
}
}
if( $aspell_err ) {
$aspell_err = "Error executing `$cmd`\\n$aspell_err";
error_handler( $aspell_err );
}
} else {
error_handler( "System error: Aspell program execution failed (`$cmd`)" );
}
} else {
error_handler( "System error: Could not open file '$tempfile' for writing" );
}
# close temp file, delete file
unlink( $tempfile );
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="<?php echo $spellercss ?>" />
<script language="javascript" src="<?php echo $word_win_src ?>"></script>
<script language="javascript">
var suggs = new Array();
var words = new Array();
var textinputs = new Array();
var error;
<?php
print_textinputs_var();
print_checker_results();
?>
var wordWindowObj = new wordWindow();
wordWindowObj.originalSpellings = words;
wordWindowObj.suggestions = suggs;
wordWindowObj.textInputs = textinputs;
function init_spell() {
// check if any error occured during server-side processing
if( error ) {
alert( error );
} else {
// call the init_spell() function in the parent frameset
if (parent.frames.length) {
parent.init_spell( wordWindowObj );
} else {
alert('This page was loaded outside of a frameset. It might not display properly');
}
}
}
</script>
</head>
<!-- <body onLoad="init_spell();"> by FredCK -->
<body onLoad="init_spell();" bgcolor="#ffffff">
<script type="text/javascript">
wordWindowObj.writeBody();
</script>
</body>
</html>
没有合适的资源?快使用搜索试试~ 我知道了~
Helloer企业级论坛系统
共599个文件
gif:199个
class:144个
jsp:54个
需积分: 9 11 下载量 87 浏览量
2008-10-14
11:59:24
上传
评论
收藏 7.74MB ZIP 举报
温馨提示
Helloer企业级论坛系统——是一个用jsp+js实现的论坛系统。
资源推荐
资源详情
资源评论
收起资源包目录
Helloer企业级论坛系统 (599个子文件)
spellchecker.cfm 5KB
RegisterService.class 6KB
PublishTopicService.class 6KB
UserBusiness.class 5KB
ForumBusiness.class 5KB
PublishThreadService.class 5KB
ServerDetector.class 5KB
ForumInitialize.class 5KB
LoginService.class 5KB
User.class 5KB
UserGroupFilter.class 5KB
UpdateUserGroupService.class 4KB
MasterBusiness.class 4KB
UpdateForumService.class 4KB
TopicBusiness.class 4KB
QueryUserListService.class 4KB
UpdateMasterService.class 4KB
UserGroupBusiness.class 4KB
UpdateBulletinService.class 4KB
RankBusiness.class 4KB
QueryTopicListService.class 4KB
ControlService.class 4KB
UpdateUserService.class 4KB
TopicTypeBusiness.class 4KB
UploadFriendLinkImageService.class 4KB
UploadUserGroupImageService.class 4KB
UploadUserHeadImageService.class 4KB
UploadRankImageService.class 4KB
UpdateLogoService.class 4KB
Topic.class 4KB
ViewForumService.class 4KB
UpdateControlService.class 4KB
ImageService.class 4KB
ViewTopicService.class 4KB
MineService.class 4KB
Forum.class 3KB
UpdateFriendLinkService.class 3KB
BoardBusiness.class 3KB
AdminGroupBusiness.class 3KB
UpdateTopicTypeService.class 3KB
UpdateAdminGroupService.class 3KB
UpdateForumInfoService.class 3KB
SystemLoginService.class 3KB
UpdateRankService.class 3KB
QueryForumListService.class 3KB
PublishTopicBusiness.class 3KB
UpdateBoardService.class 3KB
PublishThreadBusiness.class 3KB
QueryUserDetailService.class 3KB
UserGroup.class 3KB
QueryControlBusiness.class 3KB
LoginBusiness.class 3KB
UpdateSettingService.class 3KB
AdminGroup.class 3KB
BulletinBusiness.class 3KB
FavoriteService.class 3KB
FriendService.class 3KB
UpdateUserHeadService.class 3KB
ThreadBusiness.class 3KB
UpdateControlBusiness.class 3KB
QuerySettingDetailService.class 3KB
UpdateCreditService.class 3KB
FriendLinkBusiness.class 3KB
SystemLoginBusiness.class 3KB
BulletinService.class 3KB
LogoutService.class 3KB
ViewUserService.class 3KB
ViewBoardService.class 3KB
QueryMasterListService.class 2KB
ViewTopicBusiness.class 2KB
RegisterBusiness.class 2KB
UserHeadBusiness.class 2KB
QuerySystemLoginLogListService.class 2KB
UpdateTopicService.class 2KB
QueryFriendLinkListService.class 2KB
QueryAdminGroupListService.class 2KB
QueryUserGroupListService.class 2KB
QueryTopicTypeListService.class 2KB
QueryThreadListService.class 2KB
QueryBulletinListService.class 2KB
QueryUserHeadListService.class 2KB
QueryMineBusiness.class 2KB
Bulletin.class 2KB
QueryBoardListService.class 2KB
ForumStat.class 2KB
ConnectionFactory.class 2KB
QueryRankListService.class 2KB
UserInfo.class 2KB
JobBusiness.class 2KB
Thread.class 2KB
ForumInfo.class 2KB
UpdateSystemLoginLogService.class 2KB
ViewForumBusiness.class 2KB
SystemLoginLogBusiness.class 2KB
PublishInitService.class 2KB
MainService.class 2KB
PermissionFilter.class 2KB
SystemFilter.class 2KB
TopicFilter.class 2KB
ForumFilter.class 2KB
共 599 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
诚待世事
- 粉丝: 5
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功