Changeset 20860


Ignore:
Timestamp:
2011/04/18 21:56:35 (13 years ago)
Author:
nanasess
bzr:base-revision:
ohkouchi@loop-az.jp-20110418102425-xm10rcev2j2xr3db
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/Smarty/templates/admin/design/css.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Fdesign%2Fcss.tpl
data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php 15689@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_CSS.php
data/class/pages/admin/design/LC_Page_Admin_Design_Header.php 15688@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_Header.php
bzr:mapping-version:
v4
bzr:merge:

ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20110418125631-85kcyrv2bsk1tnq6
bzr:revno:
3571
bzr:revprop:branch-nick:
branches/version-2_11-dev
bzr:root:
branches/version-2_11-dev
bzr:text-revisions:

data/Smarty/templates/admin/design/css.tpl ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx
data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx
data/class/pages/admin/design/LC_Page_Admin_Design_Header.php ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx
bzr:timestamp:
2011-04-18 21:56:31.716000080 +0900
bzr:user-agent:
bzr2.2.1+bzr-svn1.0.4
svn:original-date:
2011-04-18T12:56:31.716000Z
Message:

#972 (リファクタリング開発:[管理画面]デザイン管理)

  • ヘッダ/フッタ設定
Location:
branches/version-2_11-dev/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_11-dev/data/Smarty/templates/admin/design/css.tpl

    r20800 r20860  
    3030<div id="design" class="contents-main"> 
    3131 
     32    <!--{if $arrErr.err != ""}--> 
     33        <div class="message"> 
     34            <span class="attention"><!--{$arrErr.err}--></span> 
     35        </div> 
     36    <!--{/if}--> 
     37 
    3238    <!--▼CSS設定ここから--> 
    3339    <table class="form"> 
     
    3541            <th>CSSファイル名</th> 
    3642            <td> 
    37                 <!--{if $arrErr.css_name != ""}--><span class="attention"><!--{$arrErr.css_name}--></span><br /><!--{/if}--> 
    38                 <input type="text" name="css_name" value="<!--{$css_name|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr.css_name != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}-->" size="60" class="box60" />.css<span class="attention"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span> 
     43                <!--{assign var=key value="css_name"}--> 
     44                <input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="60" class="box60" />.css 
     45                <span class="attention"> (上限<!--{$arrForm[$key].length}-->文字)</span> 
     46                <!--{if $arrErr[$key] != ""}--> <div class="attention"><!--{$arrErr[$key]}--></div> <!--{/if}--> 
    3947            </td> 
    4048        </tr> 
     
    4250            <th>CSS内容</th> 
    4351            <td> 
    44                 <textarea id="css" class="top" name="css" cols=90 rows=<!--{$area_row}--> align="left" wrap=off style="width: 650px;"><!--{$css_data|h}--></textarea> 
     52                <!--{assign var=key value="css_data"}--> 
     53                <textarea id="css" class="top" name="<!--{$key}-->" cols="90" rows=<!--{$area_row}--> align="left" style="width: 650px;"><!--{$arrForm[$key].value|h}--></textarea> 
    4554                <input type="hidden" name="area_row" value="<!--{$area_row}-->" /> 
    4655                <div class="btn"> 
  • branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php

    r20813 r20860  
    6868     * Page のアクション. 
    6969     * 
    70      * FIXME css ファイルの取得方法を要修正 
    71      * 
    7270     * @return void 
    7371     */ 
    7472    function action() { 
    75         $objFileManager = new SC_Helper_FileManager_Ex(); 
    76         $this->objLayout = new SC_Helper_PageLayout_Ex(); 
     73        $objLayout = new SC_Helper_PageLayout_Ex(); 
    7774 
    7875        $objFormParam = new SC_FormParam_Ex(); 
    79         $this->lfInitParam($objFormParam, $_REQUEST); 
     76        $this->lfInitParam($objFormParam); 
     77        $objFormParam->setParam($_REQUEST); 
     78        $objFormParam->convParam(); 
     79        $this->arrErr = $objFormParam->checkError(); 
     80        $is_error = (!SC_Utils_Ex::isBlank($this->arrErr)); 
    8081 
    8182        // CSSファイル名を取得 
    82         $css_name = $objFormParam->getValue('css_name'); 
    83         $this->css_name = $css_name; 
    84         $old_css_name = $objFormParam->getValue('old_css_name'); 
    85         if ($old_css_name == "" && $css_name != "") { 
    86             $old_css_name = $css_name; 
    87         } 
    88         $this->old_css_name = $old_css_name; 
    89  
    90         // 端末種別IDを取得 
    91         $device_type_id = $objFormParam->getValue('device_type_id'); 
    92  
    93         //サブタイトルの追加 
    94         $this->tpl_subtitle .= ' - ' . $this->arrDeviceType[$device_type_id]; 
    95  
    96         $css_dir = $this->objLayout->getTemplatePath($device_type_id, true) . "css/"; 
    97         $css_path = $css_dir . $css_name . '.css'; 
    98  
    99         // CSSファイルの読み込み 
    100         if($css_name != ''){ 
    101             $css_data = $objFileManager->sfReadFile($css_path); 
    102         } 
    103         // テキストエリアに表示 
    104         $this->css_data = $css_data; 
     83        $this->css_name = $objFormParam->getValue('css_name'); 
     84        $this->old_css_name = $objFormParam->getValue('old_css_name', $this->css_name); 
     85        $this->device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC); 
     86 
     87        $css_dir = $objLayout->getTemplatePath($this->device_type_id, true) . "css/"; 
     88        $css_path = $css_dir . $this->css_name . '.css'; 
    10589 
    10690        switch($this->getMode()) { 
    10791            // データ更新処理 
    10892            case 'confirm': 
    109                 $this->lfExecuteConfirm($css_dir, $css_name, $old_css_name, $css_path); 
     93                if (!$is_error) { 
     94                    $this->arrErr = $this->lfCheckError($objFormParam, $this->arrErr); 
     95                    if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     96                        if ($this->doRegister($css_dir, $this->css_name, $this->old_css_name, $css_path, 
     97                                              $objFormParam->getValue('css_data'))) { 
     98                            $this->tpl_onload = "alert('登録が完了しました。');"; 
     99                        } 
     100                    } 
     101                } 
    110102                break; 
    111103            case 'delete': 
    112                 $this->lfExecuteDelete($css_path, $device_type_id); 
     104                if (!$is_error) { 
     105                    if ($this->doDelete($css_path)) { 
     106                        SC_Response_Ex::reload(array('device_type_id' => $this->device_type_id, 
     107                                                     'msg' => 'on'), true); 
     108                    } 
     109                } 
    113110                break; 
    114111            default: 
     112                if (isset($_GET['msg']) && $_GET['msg'] == 'on') { 
     113                    // 完了メッセージ 
     114                    $this->tpl_onload = "alert('登録が完了しました。');"; 
     115                } 
    115116                break; 
    116117        } 
    117118 
    118         // ファイルリストを取得 
    119         $this->arrCSSList = $this->lfGetCSSList($css_dir); 
    120         $this->device_type_id = $device_type_id; 
     119        if (!$is_error) { 
     120            // CSSファイルの読み込み 
     121            if (!SC_Utils_Ex::isBlank($this->css_name)) { 
     122                $objFormParam->setValue('css_data', file_get_contents($css_path)); 
     123            } 
     124            // ファイルリストを取得 
     125            $this->arrCSSList = $this->getCSSList($css_dir); 
     126        } else { 
     127            // 画面にエラー表示しないため, ログ出力 
     128            GC_Utils_Ex::gfPrintLog('Error: ' . print_r($this->arrErr, true)); 
     129 
     130        } 
     131        $this->tpl_subtitle .= ' - ' . $this->arrDeviceType[$this->device_type_id]; 
     132        $this->arrForm = $objFormParam->getFormParamList(); 
    121133    } 
    122134 
     
    130142    } 
    131143 
    132  
    133144    /** 
    134145     * パラメータ情報の初期化 
    135146     * 
    136147     * @param object $objFormParam SC_FormParamインスタンス 
    137      * @param array $arrPost $_POSTデータ 
    138      * @return void 
    139      */ 
    140     function lfInitParam(&$objFormParam, $arrPost) { 
    141         $objFormParam->addParam("端末種別ID", "device_type_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"), DEVICE_TYPE_PC); 
    142         $objFormParam->addParam("CSSファイル名", "css_name", MTEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 
    143         $objFormParam->addParam("旧CSSファイル名", "old_css_name", MTEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 
    144         $objFormParam->setParam($arrPost); 
    145         $objFormParam->convParam(); 
    146     } 
    147  
    148     function lfExecuteConfirm($css_dir, $css_name, $old_css_name, $css_path) { 
     148     * @return void 
     149     */ 
     150    function lfInitParam(&$objFormParam) { 
     151        $objFormParam->addParam("端末種別ID", "device_type_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); 
     152        $objFormParam->addParam("CSSファイル名", "css_name", STEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 
     153        $objFormParam->addParam("旧CSSファイル名", "old_css_name", STEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 
     154        $objFormParam->addParam("CSSデータ", "css_data"); 
     155 
     156    } 
     157 
     158    /** 
     159     * 登録を実行する. 
     160     * 
     161     * ファイルの作成に失敗した場合は, エラーメッセージを出力する. 
     162     * 
     163     * @param string $css_dir CSS ディレクトリ 
     164     * @param string $css_name CSSファイル名 
     165     * @param string $old_css_name 旧CSSファイル名 
     166     * @param string $css_path CSSファイルの絶対パス 
     167     * @param string $css_data 書き込みを行うデータ 
     168     * @return boolean 登録が成功した場合 true; 失敗した場合 false 
     169     */ 
     170    function doRegister($css_dir, $css_name, $old_css_name, $css_path, $css_data) { 
    149171        $objFileManager = new SC_Helper_FileManager_Ex(); 
    150172 
    151         // エラーチェック 
    152         $this->arrErr = $this->lfErrorCheck($_POST, $css_dir); 
    153  
    154         // エラーがなければ更新処理を行う 
    155         if (count($this->arrErr) == 0) { 
    156             // 旧ファイルの削除 
    157             if ($old_css_name != '' && $old_css_name != $css_name) { 
    158                 $objFileManager->sfDeleteDir($css_dir . $old_css_name . '.css'); 
    159             } 
    160             // プレビュー用テンプレートに書き込み 
    161             $objFileManager->sfWriteFile($css_path, $_POST['css']); 
    162  
    163             $this->tpl_onload="alert('登録が完了しました。');"; 
    164             $this->old_css_name = $css_name; 
    165         } 
    166         $this->css_data = $_POST['css']; 
    167     } 
    168  
    169     function lfExecuteDelete($css_path, $device_type_id) { 
    170         $objFileManager = new SC_Helper_FileManager_Ex(); 
    171  
    172         // css_name が空でない場合にはdeleteを実行 
    173         if ($_POST['css_name'] !== '') { 
    174             $objFileManager->sfDeleteDir($css_path); 
    175         } 
    176         $this->objDisplay->reload(array('device_type_id' => $device_type_id), true); 
     173        if (!SC_Utils_Ex::isBlank($old_css_name) 
     174            && $old_css_name != $css_name) { 
     175            if (!unlink($css_dir . $old_css_name . '.css')) { 
     176                $this->arrErr['err'] = '※ 旧ファイルの削除に失敗しました<br />'; 
     177                return false; 
     178            } 
     179        } 
     180 
     181        if (!SC_Helper_FileManager_Ex::sfWriteFile($css_path, $css_data)) { 
     182            $this->arrErr['err'] = '※ CSSの書き込みに失敗しました<br />'; 
     183            return false; 
     184        } 
     185        return true; 
     186    } 
     187 
     188    /** 
     189     * 削除を実行する. 
     190     * 
     191     * @param string $css_path CSSファイルの絶対パス 
     192     * @return boolean 削除が成功した場合 true; 失敗した場合 false 
     193     */ 
     194    function doDelete($css_path) { 
     195        if (!unlink($css_path)) { 
     196            $this->arrErr['err'] = '※ CSSの削除に失敗しました<br />'; 
     197            return false; 
     198        } 
     199        return true; 
    177200    } 
    178201 
     
    183206     * @return array ファイルリスト 
    184207     */ 
    185     function lfGetCSSList($css_dir) { 
     208    function getCSSList($css_dir) { 
    186209        $objFileManager = new SC_Helper_FileManager_Ex(); 
    187210 
    188211        $arrFileList = $objFileManager->sfGetFileList($css_dir); 
    189         foreach ($arrFileList as $key => $val) { 
     212        foreach ($arrFileList as $val) { 
    190213            if (!$val['is_dir']) { 
    191214                $arrCSSList[] = array( 
     
    199222 
    200223    /** 
    201      * 入力項目のエラーチェックを行う. 
    202      * 
    203      * @param array $arrData 入力データ 
    204      * @param array $css_dir CSSディレクトリ 
    205      * @return array エラー情報 
    206      */ 
    207     function lfErrorCheck($array, $css_dir) { 
    208         $objErr = new SC_CheckError_Ex($array); 
    209  
    210         $objErr->doFunc(array("CSSファイル名", "css_name", STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK")); 
    211  
    212         // 入力文字が英数字,"_","-"以外ならエラーを返す 
    213         if(!isset($objErr->arrErr['css_name'])){ 
    214             if(!ereg("^[a-zA-Z0-9_\.-]+$", $array['css_name'])) { 
    215                 $objErr->arrErr['css_name'] = '※ CSSファイル名は英数字と"_"および"-"だけを入力してください。<br />'; 
    216             } 
    217         } 
    218  
    219         // 同一のファイル名が存在している場合にはエラー 
    220         if(!isset($objErr->arrErr['css_name'])){ 
    221             $arrCSSList = $this->lfGetCSSList($css_dir); 
    222             foreach ($arrCSSList as $key => $val) { 
    223                 if ($val['css_name'] == $array['css_name']) { 
    224                     if ($array['old_css_name'] == '' || $array['old_css_name'] != $array['css_name']) { 
    225                         $errFlg = TRUE; 
     224     * エラーチェックを行う. 
     225     * 
     226     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     227     * @return array エラーメッセージの配列 
     228     */ 
     229    function lfCheckError(&$objFormParam, &$arrErr) { 
     230        $arrParams = $objFormParam->getHashArray(); 
     231        $objErr = new SC_CheckError_Ex($arrParams); 
     232        $objErr->arrErr =& $arrErr; 
     233        $objErr->doFunc(array('CSSファイル名', 'css_name', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK","FILE_NAME_CHECK_BY_NOUPLOAD")); 
     234 
     235        $device_type_id = $objFormParam->getValue('device_type_id'); 
     236        $css_name = $objFormParam->getValue('css_name'); 
     237        $old_css_name = $objFormParam->getValue('old_css_name', $css_name); 
     238 
     239        $is_error = false; 
     240        // 重複チェック 
     241        if(!SC_Utils_Ex::isBlank(($objErr->arrErr['css_name']))) { 
     242            $arrCSSList = $this->getCSSList($this->getCSSDir()); 
     243            foreach ($arrCSSList as $val) { 
     244                if ($val['css_name'] == $css_name) { 
     245                    if (SC_Utils_Ex::isBlank($old_css_name) 
     246                        || $old_css_name != $css_name) { 
     247                        $is_error = true; 
    226248                    } 
    227249                } 
    228250            } 
    229             if ($errFlg) $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; 
    230         } 
    231  
     251            if ($is_error) { 
     252                $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; 
     253            } 
     254        } 
    232255        return $objErr->arrErr; 
     256    } 
     257 
     258    /** 
     259     * CSSディレクトリを取得する. 
     260     * 
     261     * @param integer $device_type_id 端末種別ID 
     262     * @return string CSSディレクトリ 
     263     */ 
     264    function getCSSDir($device_type_id) { 
     265        return SC_Helper_PageLayout_Ex::getTemplatePath($device_type_id, true) . "css/"; 
    233266    } 
    234267} 
  • branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design_Header.php

    r20859 r20860  
    8484        // 登録 
    8585        case 'regist': 
    86             if ($this->doRegister($objFormParam)) { 
    87                 $this->tpl_onload = "alert('登録が完了しました。');"; 
     86            $this->arrErr = $this->lfCheckError($objFormParam, $this->arrErr); 
     87            if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     88                if ($this->doRegister($objFormParam)) { 
     89                    $this->tpl_onload = "alert('登録が完了しました。');"; 
     90                } 
    8891            } 
    8992            break; 
     
    140143     * @return array エラーメッセージの配列 
    141144     */ 
    142     function lfCheckError(&$objFormParam, &$arrErr, &$objLayout) { 
     145    function lfCheckError(&$objFormParam, &$arrErr) { 
    143146        $arrParams = $objFormParam->getHashArray(); 
    144147        $objErr = new SC_CheckError_Ex($arrParams); 
Note: See TracChangeset for help on using the changeset viewer.