一个wiki程序,不知道错在哪儿了,调试无结果

olala12333 2009-03-03 04:06:00
用了prototype.js框架 加速开发
Wiki.html是程序的前端部分,负责显示数据及处理用户所触发的任何事件

<body>
<div id="ID_TITLE">
<img src="images/title.gif" alt="images/title.gif">
<font size="2px">Edit in place!</font>
</div>
<div id="ID_SAVING" style="display:none">Saving</div>

<div id="ID_WIKI_EDIT" style="display:none">
<textarea id="ID_EDIT_CONTENT" rows="15" cols="120" name="ID_EDIT_CONTENT">
</textarea>
<br>
<table border="0">
<tr><td valign="top">
[<a href="javascript:save_draft();">保存草稿</a>]-
[<a href="javascript:preview();">浏览</a>]-
[<a href="javascript:save();">保存</a>]-
[<a href="javascript:history();">浏览历史记录</a>]
</td><td>
<div id="ID_HISTORY" style="display:none;width:auto">
</div>
</td></tr>
</table>
</div>

<div id="ID_WIKI_BOARD" style="display:none">
<div id="ID_WIKI_CONTENT"></div>
<div align="right"id="ID_EDIT">
[<a href="javascript:request_edit();">编辑</a>]
</div>
<div align="right" style="display:none" id="ID_CLOSE">
[<a href="javascript:close_preview();">关闭</a>]
</div>
</div>

<script type="text/javascript">
var a;
a = get_window_size();
$('ID_SAVING').style.left=a[0]-50;
historyMenu=new Menu('historyMenu','ID_HISTORY','choose_history','son','soff');

var req=new Ajax.Request('query.php',
{method:'get',
onComplete:function(r){
if (r.responseText.length==0)
request_edit();
else
show(r.responseText);
}
});
</script>

</body>





query.php:
<?php

function latest_content() {
$files = glob("data/*.html");
if (count($files) == 0)
return '';

#因为我们是以时间作为文件名,所以依照文件名排序,
#便可得到最新的编辑内容
rsort($files, SORT_STRING);
return file_get_contents($files[0]);
}
$action = $_REQUEST["action"];

if (!$action || $action == "latest") {
echo latest_content();
} else if ($action == "draft") {
if (file_exists("data/.draft.html")) {
echo file_get_contents("data/.draft.html");
} else {
echo latest_content();
}
} else if ($action == "history") {
$files = glob("data/*.html");
#同样根据文件名排序,获得历史记录顺序
rsort($files,SORT_STRING);
foreach ($files as $f){
if ($f!=".draft.html"){
printf("%s\n", $f);

}
}
} else
if ($action == "file") {
$fname = $_REQUEST['filename'];
if (file_exists($fname)) {
$content = file_get_contents($fname);
echo $content;
}
}
?>



save.php

<?php
$action=$_REQUEST['action'];

if ($action=="save"){
$content=$_REQUEST["content"];
#用时间作为保存点文件名
$filename="data/".
strftime($filename,"w");

if (!$fp){
exit(0);
}
fwrite($fp,$content);
fclose($fp);

fwrite($fp,$content);
fclose($fp);
#删除之前草稿
if (file_exists("data/.draft.html")){
unlink("data/.draft.html");
}
echo $content;
}else if ($action=="draft"){
$content=$_REQUEST["content"];
#草稿保存在.draft.html中
$fp=fopen("data/.draft.html","w");
fwrite($fp,$content);
fclose($fp);
}

?>



function request_edit(){
var req=
new Ajax.Request('query.php',
{method:'get',
parameters:'action=draft',
onComplete:function(r)
{
if (r.responseText.length==0)
edit('Edit Here');
else
edit(r.responseText);
}
});
}

/*编辑模式*/
function edit(content){
Element.show('ID_WIKI_EDIT');
$('ID_EDIT_CONTENT').disabled=false;
Element.hide('ID_WIKI_BOARD');
$('ID_EDIT_CONTENT').value=content;
if (!DraftSavingTask){
setTimeout(auto_save,
AutoDraftSavingFrequency*1000);
DraftSavingTask=true;
}
}

function show(content){
Element.show('ID_WIKI_BOARD');
Element.hide('ID_WIKI_EDIT');
$('ID_WIKI_CONTENT').innerHTML=content;
}

function save(){
close_preview();
var content=$('ID_EDIT_CONTENT').value;
if(content.length>0){
DraftSavingTask=false;
$('ID_EDIT_CONTENT').disabled=true;
var req =new Ajax.Request('save.php',
{method:'post',
postBody:'action=save&content='+
encodeURIComponent(conrent),
onComplete:function(r){
show(r.responseText);}
});
}
}


/*草稿保存功能*/
function save_draft(){
var content=$('ID_EDIT_CONTENT'.value;
if(content.length>0){
Element.show('ID_SAVING');
var req=new Ajax.Request('save.php',
{method:'post',
postBody:'action=draft&content='+
encodeURIComponent(content),
onComplete:function(){
Element.hide('ID_SAVING');}
});
}
}
/*取得当前窗口大小*/
function get_window_size(){
var winW;
var winH;
if(parseInt(navigator.appVersion)>3){
if (navigator.appName=="Netscape"){
winW=window.innerWidth;
winH=window.innerHeight;
}
if (navigator.appName.indexOf("Microsoft")!=-1){
winW=document.body.offsetWidth;
winH=document.body.offsetHeight;
}
}
return[winW,winH];
}

/*草稿保存变量*/
var AutoDraftSavingFrequency=30;//默认每30秒自动保存一次
var DraftSavingTask=false;
/*定期自动保存草稿*/
function auto_save(){
if (DraftSavingTask){
save_draft();
setTimeout(auto_save,
AutoDraftSavingFrequency * 1000);
}
}
function edit(content){
Element.show('ID_WIKI_EDIT');
$('ID_EDIT_CONTENT').disabled=false;
Element.hide('ID_WIKI_BOARD');
$('ID_EDIT_CONTENT').value=content;
if (!DraftSavingTask){
/*进入编辑模式后,初始自动保存功能*/
setTimeout(auto_save,
AutoDraftSavingFrequency * 1000);
DraftSavingTask =true;
}
}

/*打开预览页面*/

function preview(){
Element.hide('ID_EDIT');
Element.show('ID_CLOSE');
Element.show('ID_WIKI_BOARD');
$('ID_WIKI_CONTENT').innerHTML=
$('ID_EDIT_CONTENT').value;
}

/*关闭预览页面*/

function close_preview(){
Element.hide('ID_WIKI_BOARD');
Element.show('ID_EDIT');
Element.hide('ID_CLOSE');
}


var MAX_SELECTION = 5;
var historyMenu;
var menuOn = false;
/*某个历史记录被选取时,取得该记录内容*/
function choose_history(id) {
var fname=historyMenu.get_content(id);
Element.hide('ID_HISTORY');
menuOn = false;//我们已经关闭菜单了
var req = new Ajax.Request('query.php',
{method:'get',
parameters:'action=flie&filename='+fname,
onComplete:function (r)
{
if (r.responseText.length !=0)
$('ID_EDIT_CONTENT').value=
r.responseText;
}
});
}
/*历史记录浏览功能*/
function history(){
if (!menuOn){
var req =new Ajax.Request('query.php',
{method:'get',
parameters:'action=history',
onComplete:function (r)
{
var hist=r.responseText.
split('\n').
without('\r','\n','');
if (hist.length==0)
return;
historyMenu.chear();
for (var i = 0;i<Math.min(hist.length,
MAX_SELECTION);i++){
historyMenu.
add_item (hist[i]);
}
Element.show('ID_HISTORY');
menuOn=true;
historyMenu.highlight(0);
}
});
}else {
Element.hide('ID_HISTORY');
menuOn=false;
}
}
...全文
66 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧