Ignore:
Timestamp:
2010/03/11 10:35:11 (14 years ago)
Author:
kajiwara
Message:

正式版にナイトリービルド版をマージしてみるテスト

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tmp/version-2_5-test/data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php

    r16741 r18609  
    2424// {{{ requires 
    2525require_once(CLASS_PATH . "pages/LC_Page.php"); 
     26require_once(CLASS_EX_PATH . "helper_extends/SC_Helper_FileManager_Ex.php"); 
    2627 
    2728/** 
     
    6465        SC_Utils_Ex::sfIsSuccess($objSess); 
    6566 
    66         $css_path = USER_PATH . "css/common.css"; 
    67  
    68         if (!isset($_POST['mode'])) $_POST['mode'] = ""; 
    69  
    70         // データ更新処理 
    71         if ($_POST['mode'] == 'confirm'){ 
    72             // プレビュー用テンプレートに書き込み 
    73             $fp = fopen($css_path,"w"); // TODO 
    74             fwrite($fp, $_POST['css']); 
    75             fclose($fp); 
    76  
    77             $this->tpl_onload="alert('登録が完了しました。');"; 
    78         } 
     67        $objFileManager = new SC_Helper_FileManager_Ex(); 
     68 
     69        // CSSファイル名を取得 
     70        if (isset($_POST['css_name'])) { 
     71            $css_name = $_POST['css_name']; 
     72        }else if (isset($_GET['css_name'])){ 
     73            $css_name = $_GET['css_name']; 
     74        }else{ 
     75            $css_name = ''; 
     76        } 
     77        $this->css_name = $css_name; 
     78 
     79        if (isset($_POST['old_css_name'])) { 
     80            $old_css_name = $_POST['old_css_name']; 
     81        }else if (isset($_GET['css_name'])) { 
     82            $old_css_name = $_GET['css_name']; 
     83        }else{ 
     84            $old_css_name = ''; 
     85        } 
     86        $this->old_css_name = $old_css_name; 
     87 
     88        $css_dir =  USER_TEMPLATE_PATH . TEMPLATE_NAME . "/css/"; 
     89        $css_path = $css_dir . $css_name . '.css'; 
    7990 
    8091        // CSSファイルの読み込み 
    81         if(file_exists($css_path)){ 
    82             $css_data = file_get_contents($css_path); 
    83         } 
    84  
     92        if($css_name != ''){ 
     93            $css_data = $objFileManager->sfReadFile($css_path); 
     94        } 
    8595        // テキストエリアに表示 
    8696        $this->css_data = $css_data; 
     97 
     98        if (!isset($_POST['mode'])) $_POST['mode'] = ""; 
     99 
     100        switch($_POST['mode']) { 
     101            // データ更新処理 
     102            case 'confirm': 
     103                $this->lfExecuteConfirm($css_dir, $css_name, $old_css_name, $css_path); 
     104                break; 
     105            case 'delete': 
     106                $this->lfExecuteDelete($css_path); 
     107                break; 
     108            default: 
     109                if(isset($_POST['mode'])) { 
     110                   GC_Utils::gfPrintLog("MODEエラー:".$_POST['mode']); 
     111                } 
     112                break; 
     113        } 
     114 
     115        // ファイルリストを取得 
     116        $this->arrCSSList = $this->lfGetCSSList($css_dir); 
    87117 
    88118        // 画面の表示 
     
    99129        parent::destroy(); 
    100130    } 
     131 
     132    function lfExecuteConfirm($css_dir, $css_name, $old_css_name, $css_path) { 
     133        $objFileManager = new SC_Helper_FileManager_Ex(); 
     134 
     135        // エラーチェック 
     136        $this->arrErr = $this->lfErrorCheck($_POST, $css_dir); 
     137 
     138        // エラーがなければ更新処理を行う 
     139        if (count($this->arrErr) == 0) { 
     140            // 旧ファイルの削除 
     141            if ($old_css_name != '' && $old_css_name != $css_name) { 
     142                $objFileManager->sfDeleteDir($css_dir . $old_css_name . '.css'); 
     143            } 
     144            // プレビュー用テンプレートに書き込み 
     145            $objFileManager->sfWriteFile($css_path, $_POST['css']); 
     146 
     147            $this->tpl_onload="alert('登録が完了しました。');"; 
     148            $this->old_css_name = $css_name; 
     149        } 
     150        $this->css_data = $_POST['css']; 
     151    } 
     152 
     153    function lfExecuteDelete($css_path) { 
     154        $objFileManager = new SC_Helper_FileManager_Ex(); 
     155 
     156        // css_name が空でない場合にはdeleteを実行 
     157        if ($_POST['css_name'] !== '') { 
     158            $objFileManager->sfDeleteDir($css_path); 
     159        } 
     160        $this->sendRedirect($this->getLocation("./css.php")); 
     161    } 
     162 
     163    /** 
     164     * CSSファイルのリストを取得. 
     165     * 
     166     * @param array $css_dir CSSディレクトリ 
     167     * @return array ファイルリスト 
     168     */ 
     169    function lfGetCSSList($css_dir) { 
     170        $objFileManager = new SC_Helper_FileManager_Ex(); 
     171 
     172        $arrFileList = $objFileManager->sfGetFileList($css_dir); 
     173        foreach ($arrFileList as $key => $val) { 
     174            if (!$val['is_dir']) { 
     175                $arrCSSList[] = array( 
     176                    'file_name' => $val['file_name'], 
     177                    'css_name'  => preg_replace('/(.+)\.(.+?)$/','$1',$val['file_name']), 
     178                ); 
     179            } 
     180        } 
     181        return $arrCSSList; 
     182    } 
     183 
     184    /** 
     185     * 入力項目のエラーチェックを行う. 
     186     * 
     187     * @param array $arrData 入力データ 
     188     * @param array $css_dir CSSディレクトリ 
     189     * @return array エラー情報 
     190     */ 
     191    function lfErrorCheck($array, $css_dir) { 
     192        $objErr = new SC_CheckError($array); 
     193 
     194        $objErr->doFunc(array("CSSファイル名", "css_name", STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK")); 
     195 
     196        // 入力文字が英数字,"_","-"以外ならエラーを返す 
     197        if(!isset($objErr->arrErr['css_name'])){ 
     198            if(!ereg("^[a-zA-Z0-9_\.-]+$", $array['css_name'])) { 
     199                $objErr->arrErr['css_name'] = '※ CSSファイル名は英数字と"_"および"-"だけを入力してください。<br />'; 
     200            } 
     201        } 
     202 
     203        // 同一のファイル名が存在している場合にはエラー 
     204        if(!isset($objErr->arrErr['css_name'])){ 
     205            $arrCSSList = $this->lfGetCSSList($css_dir); 
     206            foreach ($arrCSSList as $key => $val) { 
     207                if ($val['css_name'] == $array['css_name']) { 
     208                    if ($array['old_css_name'] == '' || $array['old_css_name'] != $array['css_name']) { 
     209                        $errFlg = TRUE; 
     210                    } 
     211                } 
     212            } 
     213            if ($errFlg) $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; 
     214        } 
     215 
     216        return $objErr->arrErr; 
     217    } 
    101218} 
    102219?> 
Note: See TracChangeset for help on using the changeset viewer.