Changeset 17112


Ignore:
Timestamp:
2008/03/07 21:00:04 (16 years ago)
Author:
pineray
Message:

管理画面上でpackage内のCSSを編集可能に

Location:
branches/comu-ver2/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/Smarty/templates/default/admin/design/css.tpl

    r16582 r17112  
    2727<input type="hidden" name="mode" value=""> 
    2828<input type="hidden" name="area_row" value=<!--{$area_row}-->> 
     29<input type="hidden" name="old_css_name" value="<!--{$old_css_name}-->" /> 
    2930    <tr valign="top"> 
    3031        <td background="<!--{$TPL_DIR}-->img/contents/navi_bg.gif" height="402"> 
     
    6465                                </table> 
    6566                                 
    66                                 <!--▼注意書き ここから--> 
    67                                 <table width="678" border="0" cellspacing="1" cellpadding="8" summary=" "> 
    68                                     <tr class="fs12n"> 
    69                                         <td bgcolor="#ffffff" align="left"> 
    70                                             下のテキストエリアに独自のCSSを定義することができます。<br/> 
    71                                             ここで定義したものは全ページに反映されます。 
    72                                         </td> 
    73                                     </tr> 
    74                                 </table> 
    75                                 <!--▲注意書き ここまで--> 
    76  
    77                                 <table width="678" border="0" cellspacing="0" cellpadding="0" summary=" "> 
    78                                     <tr><td colspan="3"><img src="<!--{$TPL_DIR}-->img/contents/main_bar.jpg" width="678" height="10" alt=""></td></tr> 
    79                                 </table> 
    80  
    8167                                <!--▼CSS編集 ここから--> 
    8268                                <table width="678" border="0" cellspacing="1" cellpadding="8" summary=" "> 
     69                                <tr class="fs12n"> 
     70                                    <td bgcolor="#ffffff" align="left"> 
     71                                        <!--{ if $arrErr.css_name != "" }--> <div align="center"> <span class="red12"><!--{$arrErr.css_name}--></span></div> <!--{/if}--> 
     72                                        CSSファイル名:<input type="text" name="css_name" value="<!--{$css_name}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr.css_name != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}-->" size="60" class="box60" />.css<span class="red"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span> 
     73                                    </td> 
     74                                </tr> 
    8375                                    <tr class="fs12n"> 
    84                                         <td bgcolor="#f2f1ec" align="center"> 
     76                                        <td bgcolor="#ffffff" align="center"> 
    8577                                            <textarea name="css" cols=90 rows=<!--{$area_row}--> align="left" wrap=off style="width: 650px;"><!--{$css_data}--></textarea> 
    8678                                            <div align="right"> 
     
    9688                                </table> 
    9789                                <!--▲CSS編集 ここまで--> 
     90 
     91                            <table width="678" border="0" cellspacing="0" cellpadding="0" summary=" "> 
     92                                <tr><td colspan="3"><img src="<!--{$TPL_DIR}-->img/contents/main_bar.jpg" width="678" height="10" alt=""></td></tr> 
     93                            </table> 
     94 
     95                            <!--▼CSSファイル一覧 ここから--> 
     96                            <table width="678" border="0" cellspacing="1" cellpadding="5" summary=" "> 
     97                                <tr class="fs12n"> 
     98                                    <td bgcolor="#f2f1ec" align="center" colspan=2 ><strong>編集可能CSSファイル</strong></td> 
     99                                </tr> 
     100                                 
     101                  <!--{if count($arrCSSList) > 0}--> 
     102                                <!--{foreach key=key item=item from=$arrCSSList}--> 
     103                                <tr class="fs12n" height=20> 
     104                                    <td align="center" width=600 bgcolor="<!--{if $item.css_name == $css_name}--><!--{$smarty.const.SELECT_RGB}--><!--{else}-->#ffffff<!--{/if}-->"> 
     105                                        <a href="<!--{$smarty.server.PHP_SELF}-->?css_name=<!--{$item.css_name}-->"><!--{$item.file_name}--></a> 
     106                                    </td> 
     107                                    <td  align="center" width=140 bgcolor="<!--{if $item.css_name == $css_name}--><!--{$smarty.const.SELECT_RGB}--><!--{else}-->#ffffff<!--{/if}-->"> 
     108                                        <input type="button" value="削除" name="del_<!--{$item.css_name}-->" onclick="fnFormModeSubmit('form_css','delete','css_name','<!--{$item.css_name}-->');"  /> 
     109                                    </td> 
     110                                </tr> 
     111                                <!--{/foreach}--> 
     112                  <!--{else}--> 
     113                                <tr class="fs12n"> 
     114                                    <td bgcolor="#ffffff" align="center" colspan=2 >CSSファイルが存在しません。</td> 
     115                                </tr> 
     116                  <!--{/if}--> 
     117 
     118                                <tr class="fs12n"> 
     119                                    <td bgcolor="#f2f1ec" align="center" colspan=2> 
     120                                    <input type='button' value='新規CSS作成' name='subm' onclick="location.href='http://<!--{$smarty.server.HTTP_HOST}--><!--{$smarty.server.PHP_SELF|escape}-->'"> 
     121                                    </td> 
     122                                </tr> 
     123                            </table> 
     124                            <!--▲CSSファイル一覧 ここまで--> 
     125 
    98126                                </td> 
    99127                                <td background="<!--{$TPL_DIR}-->img/contents/main_right.jpg"><img src="<!--{$TPL_DIR}-->img/common/_.gif" width="14" height="1" alt=""></td> 
  • branches/comu-ver2/data/Smarty/templates/default/site_frame.tpl

    r16633 r17112  
    2626<meta http-equiv="Content-Script-Type" content="text/javascript" /> 
    2727<meta http-equiv="Content-Style-Type" content="text/css" /> 
    28 <link rel="stylesheet" href="<!--{$smarty.const.URL_DIR}--><!--{$smarty.const.USER_DIR}-->css/common.css" type="text/css" media="all" /> 
     28<link rel="stylesheet" href="<!--{$TPL_DIR}-->css/import.css" type="text/css" media="all" /> 
    2929<link rel="alternate" type="application/rss+xml" title="RSS" href="<!--{$smarty.const.SITE_URL}-->rss/index.php" /> 
    3030<script type="text/javascript" src="<!--{$TPL_DIR}-->js/css.js"></script> 
  • branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php

    r16741 r17112  
    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        $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'; 
     90 
     91        // CSSファイルの読み込み 
     92        if($css_name != '' && file_exists($css_path)){ 
     93            $css_data = file_get_contents($css_path); 
     94        } 
     95        // テキストエリアに表示 
     96        $this->css_data = $css_data; 
    6797 
    6898        if (!isset($_POST['mode'])) $_POST['mode'] = ""; 
    6999 
    70         // データ更新処理 
    71         if ($_POST['mode'] == 'confirm'){ 
     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); 
     117 
     118        // 画面の表示 
     119        $objView->assignobj($this); 
     120        $objView->display(MAIN_FRAME); 
     121    } 
     122 
     123    /** 
     124     * デストラクタ. 
     125     * 
     126     * @return void 
     127     */ 
     128    function destroy() { 
     129        parent::destroy(); 
     130    } 
     131 
     132    function lfExecuteConfirm($css_dir, $css_name, $old_css_name, $css_path) { 
     133        // エラーチェック 
     134        $this->arrErr = $this->lfErrorCheck($_POST, $css_dir); 
     135 
     136        // エラーがなければ更新処理を行う 
     137        if (count($this->arrErr) == 0) { 
     138            // 旧ファイルの削除 
     139            if ($old_css_name != '' && $old_css_name != $css_name && file_exists($css_dir . $old_css_name . '.css')) { 
     140                unlink($css_dir . $old_css_name . '.css'); 
     141            } 
    72142            // プレビュー用テンプレートに書き込み 
    73143            $fp = fopen($css_path,"w"); // TODO 
     
    76146 
    77147            $this->tpl_onload="alert('登録が完了しました。');"; 
    78         } 
    79  
    80         // CSSファイルの読み込み 
    81         if(file_exists($css_path)){ 
    82             $css_data = file_get_contents($css_path); 
    83         } 
    84  
    85         // テキストエリアに表示 
    86         $this->css_data = $css_data; 
    87  
    88         // 画面の表示 
    89         $objView->assignobj($this); 
    90         $objView->display(MAIN_FRAME); 
    91     } 
    92  
    93     /** 
    94      * デストラクタ. 
    95      * 
    96      * @return void 
    97      */ 
    98     function destroy() { 
    99         parent::destroy(); 
     148            $this->old_css_name = $css_name; 
     149        } 
     150        $this->css_data = $_POST['css']; 
     151    } 
     152 
     153    function lfExecuteDelete($css_path) { 
     154        // css_name が空でない場合にはdeleteを実行 
     155        if ($_POST['css_name'] !== '' && file_exists($css_path)) { 
     156            unlink($css_path); 
     157        } 
     158        $this->sendRedirect($this->getLocation("./css.php")); 
     159    } 
     160 
     161    /** 
     162     * CSSファイルのリストを取得. 
     163     * 
     164     * @param array $css_dir CSSディレクトリ 
     165     * @return array ファイルリスト 
     166     */ 
     167    function lfGetCSSList($css_dir) { 
     168        $objFileManager = new SC_Helper_FileManager_Ex(); 
     169 
     170        $arrFileList = $objFileManager->sfGetFileList($css_dir); 
     171        foreach ($arrFileList as $key => $val) { 
     172            if (!$val['is_dir']) { 
     173                $arrCSSList[] = array( 
     174                    'file_name' => $val['file_name'], 
     175                    'css_name'  => preg_replace('/(.+)\.(.+?)$/','$1',$val['file_name']), 
     176                ); 
     177            } 
     178        } 
     179        return $arrCSSList; 
     180    } 
     181 
     182    /** 
     183     * 入力項目のエラーチェックを行う. 
     184     * 
     185     * @param array $arrData 入力データ 
     186     * @param array $css_dir CSSディレクトリ 
     187     * @return array エラー情報 
     188     */ 
     189    function lfErrorCheck($array, $css_dir) { 
     190        $objErr = new SC_CheckError($array); 
     191 
     192        $objErr->doFunc(array("CSSファイル名", "css_name", STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK")); 
     193 
     194        // 入力文字が英数字,"_","-"以外ならエラーを返す 
     195        if(!isset($objErr->arrErr['css_name'])){ 
     196            if(!ereg("^[a-zA-Z0-9_\.-]+$", $array['css_name'])) { 
     197                $objErr->arrErr['css_name'] = '※ CSSファイル名は英数字と"_"および"-"だけを入力してください。<br />'; 
     198            } 
     199        } 
     200 
     201        // 同一のファイル名が存在している場合にはエラー 
     202        if(!isset($objErr->arrErr['css_name'])){ 
     203            $arrCSSList = $this->lfGetCSSList($css_dir); 
     204            foreach ($arrCSSList as $key => $val) { 
     205                if ($val['css_name'] == $array['css_name']) { 
     206                    if ($array['old_css_name'] == '' || $array['old_css_name'] != $array['css_name']) { 
     207                        $errFlg = TRUE; 
     208                    } 
     209                } 
     210            } 
     211            if ($errFlg) $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; 
     212        } 
     213 
     214        return $objErr->arrErr; 
    100215    } 
    101216} 
Note: See TracChangeset for help on using the changeset viewer.