• php 仿Comsenz 安装效果


    一直都觉得Comsenz产品的数据表安装效果很漂亮,今天抽了个空,把它的核心代码都提炼出来了。

    最终的效果如下:

    step.inc.php 安装步骤效果类:

    /**
    * step.inc.php 安装步骤效果类   *
    * 从Comsenz产品的数据表安装效果中提取出主要代码,以供大家学习
    * @author tianxin
    * @link http://tianxin2001x.cnblogs.com
    * @version 1.0.0   *
    */

    class StepClass {
       
    function show_header() {
        
    define('SHOW_HEADER', TRUE);
        
    $step = 1;
        
    $version = 'beta1.0';
        
    $release = '20100223';
        
    $install_lang = '简体中文UTF8版';
        
    $title = '仿Comsenz安装';
        
    $charset = 'uft-8';
        
    echo <<<EOT
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=$charset" />
    <title>$title</title>
    <link rel="stylesheet" href="style.css" type="text/css" media="all" />
    <script type="text/javascript">
        
    function $(id) {
            
    return document.getElementById(id);
        }

        
    function showmessage(message) {
            $(
    'notice').value += message + "\\r\\n";
        }
    </script>
    <meta content="Comsenz Inc." name="Copyright" />
    </head>
    <div class="container">
        
    <div class="header">
            
    <h1>$title</h1>
            
    <span>$version $install_lang $release</span>
    EOT;

        
    $step > 0 && $this->show_step($step);
    }


    function show_step($step) {

        
    $laststep = 4;
        
    $title = '仿Comsenz安装';
        
    $comment = '正在执行操作';

        
    $stepclass = array();
        
    for($i = 1$i <= $laststep$i++) {
            
    $stepclass[$i= $i == $step ? 'current' : ($i < $step ? '' : 'unactivated');
        }
        
    $stepclass[$laststep.= ' last';

        
    echo <<<EOT
        
    <div class="setup step{$step}">
            
    <h2>$title</h2>
            
    <p>$comment</p>
        
    </div>
        
    <div class="stepstat">
            
    <ul>
                
    <li class="$stepclass[1]">1</li>
                
    <li class="$stepclass[2]">2</li>
                
    <li class="$stepclass[3]">3</li>
                
    <li class="$stepclass[4]">4</li>
            
    </ul>
            
    <div class="stepstatbg stepstat1"></div>
        
    </div>
    </div>
    <div class="main">
    EOT;

    }

    function show_install() {
    ?>
    <script type="text/javascript">
    function showmessage(message) {
        document
    .getElementById('notice').value += message + "\r\n";
    }
    function initinput() {
        window
    .location='http://tianxin2001x.cnblogs.com';
    }
    </script>
        
    <div class="main">
            
    <div class="btnbox"><textarea name="notice" style=" 80%;"  readonly="readonly" id="notice"></textarea></div>
            
    <div class="btnbox marginbot">
        
    <input type="button" name="submit" value="正在执行……" disabled style="height: 25" id="laststep" onclick="initinput()">
        
    </div>
    <?php
    }


    function runquery() {
        
    for($i=1;$i<=15;$i++)
        {
            
    $this->showjsmessage('执行操作'.' '.$i.' ... '.'成功');
            
    //模拟每执行完一个动作的延时
            sleep(1);
        }
    }

    function showjsmessage($message) {
        
    echo '<script type="text/javascript">showmessage(\''.addslashes($message).' \');</script>'."\r\n";
        
    flush();
        
    ob_flush();
    }

    function show_footer($quit = true) {

        
    echo <<<EOT
            
    <div class="footer">&copy;2001 - 2010 <a href="http://tianxin2001x.cnblogs.com/">甜心</a> 瑶瑶说杀很大.</div>
        
    </div>
    </div>
    </body>
    </html>
    EOT;
        
    $quit && exit();
    }

    }

    调用方法:

        header('Content-Type: text/html; charset=utf-8');

        
    include('step.inc.php');

        
    $step=new StepClass();

        
    //显示页面头部
        $step->show_header();
        
    //显示操作进度
        $step->show_install();
        
    //运行操作
        $step->runquery();
        
    echo '<script type="text/javascript">document.getElementById("laststep").disabled=false;document.getElementById("laststep").value = \'执行完所有操作,进入下一步\';</script>'."\r\n";
        
    //显示页面尾部
        $step->show_footer();

    完整的demo:/Files/tianxin2001x/stepdemo.rar

  • 相关阅读:
    poj3294 Life Forms(后缀数组)
    1628. White Streaks(STL)
    1523. K-inversions(K逆序对)
    1890. Money out of Thin Air(线段树 dfs转换区间)
    1350. Canteen(map)
    1521. War Games 2(线段树解约瑟夫)
    1003. Parity(并查集)
    1470. UFOs(三维树状数组)
    1471. Tree(LCA)
    1494. Monobilliards(栈)
  • 原文地址:https://www.cnblogs.com/tianxin2001x/p/1671914.html
Copyright © 2020-2023  润新知