majaxpager.php
<?php
define('MAP_PREFIX', 'map_' );
class mAjaxPager {
var $prefix;
var $ajaxlib_url;
var $ajaxif_url;
var $pagenum;
var $currentpage;
var $controllerattr;
var $buttonattr;
var $infoattr;
var $bodyattr;
function mAjaxPager( $options )
{
$this->prefix = MAP_PREFIX;
$this->ajaxlib_url = '';
$this->ajaxif_url = '';
$this->pagenum = 1;
$this->currentpage = 1;
$this->controllerattr = '';
$this->buttonattr = '';
$this->infoattr = '';
$this->bodyattr = '';
foreach ($options as $key => $value)
{
if( isset($this->{$key}) && !is_null($value) )
{
$this->{$key} = $value;
}
}
}
function GetController()
{
$fix = $this->prefix;
$buf = <<<_EOD_
<script type="text/javascript" src="{$this->ajaxlib_url}" charset="utf-8"></script>
<script type="text/javascript"><!--
function {$fix}setElement( name, str )
{
document.getElementById(name).innerHTML=str;
}
var statustimer = undefined;
function printActivate( name )
{
var status = new Array( "Now Loading /", "Now Loading ―", "Now Loading \", "Now Loading |" );
var str = document.getElementById(name).innerHTML;
for( var i = 0; i < status.length; i++ )
{
if( str == status[i] )
{
i = (i+1)%4;
{$fix}setElement( name, status[i] );
return;
}
}
{$fix}setElement( name, status[0] );
}
function stopActivate( name )
{
clearInterval(statustimer);
{$fix}setElement( name, "Complete." );
statustimer = undefined;
}
var {$fix}page = {$this->currentpage};
var {$fix}pagenum = {$this->pagenum};
function {$fix}sendData( nextpage )
{
if( !statustimer )
{
if( {$fix}page+nextpage < 1 )
{
{$fix}page = 1;
{$fix}setElement( "{$fix}info", "Newest Page" );
}
else if( {$fix}pagenum < {$fix}page+nextpage )
{
{$fix}page = {$fix}pagenum;
{$fix}setElement( "{$fix}info", "Oldest Page" );
}
else
{
{$fix}page += nextpage;
statustimer = setInterval( new Function('printActivate("{$fix}info")'), 90 );
sendRequest( {$fix}onloaded,'&page='+{$fix}page,'POST','{$this->ajaxif_url}',true,true);//送信
}
}
}
function {$fix}onloaded(res)
{
{$fix}restxt = res.responseText;
{$fix}setElement('{$fix}body',{$fix}restxt);
{$fix}setElement('{$fix}page', {$fix}page );
stopActivate("{$fix}info");
}
// --></script>
<div id="{$fix}ctrl" {$this->controllerattr}>
<input type="button" value="< new " onclick="{$fix}sendData(-1); return true;" {$this->buttonattr} />
<input type="button" value=" old >" onclick="{$fix}sendData(1); return true;" {$this->buttonattr} />
[ <span id="{$fix}page"> {$this->currentpage}</span>/{$this->pagenum} ]
<span id="{$fix}info" {$this->infoattr}>Ajax Pager</span>
</div>
_EOD_;
return $buf;
}
function GetBody( $body )
{
$fix = $this->prefix;
return "<div id=\"{$fix}body\"{$this->bodyattr}>$body</div>";
}
function Get( $_body )
{
$ctrl = $this->GetController();
$body = $this->GetBody( $_body );
return $ctrl.$body;
}
}
?>