Hello
I need some help please
There is a php class witch can edit text files and save these
I would like to implement the save as button, but with no success.
Can smomeone figure out how to do it?
Thanks
Zsolt
class
<?php
class XmlEditor
{
// variables:
var $folder;
var $fileName;
var $fileContent;
var $fileList;
/******************************************************************************
* XmlEditor
* Constructor
*
******************************************************************************/
function XmlEditor($folder, $fileName, $newFileName, $fileContent, $submitSaveFile, $submitSaveFileAs)
{
$this->folder = $folder;
$this->fileName = $_POST[ $fileName ];
$this->fileContent = $_POST[ $fileContent ];
$newFileName = $_POST[ $newFileName ];
$submitSaveFile = $_POST[ $submitSaveFile ];
$submitSaveFileAs = $_POST[ $submitSaveFileAs ];
//Read/Write file content
if ( (isset($this->fileName)) && (strlen($this->fileName) > 0) )
{
if ( isset($this->fileContent) )
{
if ( isset($submitSaveFile) )
{ $this->SaveFile($this->fileName, $this->fileContent); }
if ((isset($submitSaveFileAs)) && (isset($newFileName)))
{
$this->SaveFile($newFileName, $this->fileContent);
$this->fileName = $newFileName;
}
}
$this->fileContent = $this->LoadFile( $this->fileName );
}
else
{ $this->fileContent = "Select a file"; }
//Get list of files as dd options
$this->fileList = $this->ShowFiles( $this->fileName );
}
/******************************************************************************
* ShowFiles
* Public
*
******************************************************************************/
function ShowFiles()
{
$files = $this->GetFiles( );
sort($files);
return $this->MakeDDOptions($files, $this->fileName );
}
/******************************************************************************
* LoadFile
* Public
*
******************************************************************************/
function LoadFile($filename)
{
//Read the file
if ((! isset($filename))||('-1' == $filename))
{ return 'Select a File'; }
if (! file_exists($filename) )
{ echo "ERROR: File \"$filename\" is not present"; return false; }
if (! $file = fopen($filename,'r') )
{ echo "ERROR: File \"$filename\" is present, but could not be opened for read"; return false; }
$string = '';
while ( $eachline = fgets($file,10000) )
{ $string .= $eachline; }
fclose($file);
return htmlspecialchars($string);
}
/******************************************************************************
* SaveFile
* Public
*
******************************************************************************/
function SaveFile($filename, $content)
{
//Overwrite the file
if (-1 == $filename)
{
echo "ERROR: No file selected - try using the 'Save As...' button";
return false;
}
if (! $file = fopen($filename,'w') )
{
return false;
}
fputs($file,$content);
fclose($file);
return true;
}
/******************************************************************************
* GetFiles
* Private
*
******************************************************************************/
function GetFiles()
{
$files = array();
if (! $dir = opendir($this->folder))
{
print "Error: Could not open dir '$this->folder'<br>";
return $files;
}
while (($file = readdir($dir)) !== false)
{
if (! is_dir($file) )
{ array_push($files, $file); }
}
closedir($dir);
return $files;
}
function MakeDDOptions( $array, $selected )
{
if (! isset($selected) )
{ $selected = -1; }
$html = '';
while( list($key,$value) = each($array) )
{ $html .= $this->MakeDDOption( ereg_replace(".xml", "", $value), $this->folder.'/'.$value, $selected); }
return $html;
}
function MakeDDOption($name, $value, $selected)
{
if ($value == $selected)
{ return '<option selected value="'.$value.'">'.$name.'</option>'."
"; }
else
{ return '<option value="'.$value.'">'.$name.'</option>'."
"; }
}
}
?>
edit.php
<?php
include("class.XmlEditor.php");
$XmlEditor = new XmlEditor('../xml', 'fileName', 'newFileName', 'fileContent', 'submitSaveFile', 'submitSaveFileAs');
//Folder, followed by names of the form elements
?>
<html>
<HEAD>
<TITLE>Web Site Administration</TITLE>
<link rel="stylesheet" href="layout.css" />
</HEAD>
<body>
<form name=form1 id=form1 method=post>
<h1>Web Site Administration</h1>
<!-- Choose a file to edit -->
<div class="row">
<h2>Choose the page to edit here:</h2>
<select name="fileName" onChange="submitLoadFile.click()">
<option value="-1">Select a File</option>
<?=$XmlEditor->fileList ?>
</select>
<input type="hidden" name="newFileName" value="" />
<input type="submit" name="submitLoadFile" value="loadfile" class="hidden" />
</div>
<!-- Edit Content of the file -->
<div class="row">
<h2>Edit the content here:</h2>
<div class="topleft">
<div class="topright">
<div class="toptile"> </div>
</div>
</div>
<div class="leftedge">
<div class="rightedge">
<div class="content">
<textarea name="fileContent"><?=$XmlEditor->fileContent?></textarea>
</div>
</div>
</div>
<div class="baseleft">
<div class="baseright">
<div class="basetile"> </div>
</div>
</div>
</div>
<div class="row">
<span class="right">
<input class="button" type="submit" value="Save File" name="submitSaveFile" />
</span>
</div>
</form>
</body>
</html>