Ignore:
Timestamp:
2011/01/31 02:45:32 (13 years ago)
Author:
Seasoft
Message:

#638(ページ詳細設定で追加したページも初期登録のデータと同様の形式に)

  • プレビューと正式登録の両立ができなくなっている不具合を解消
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php

    r20041 r20055  
    4646        $this->tpl_mainpage = 'design/main_edit.tpl'; 
    4747        $this->tpl_subnavi  = 'design/subnavi.tpl'; 
    48         $this->user_URL     = USER_URL; 
    4948        $this->text_row     = 13; 
    5049        $this->tpl_subno = "main_edit"; 
     
    156155        // テンプレートを読み込む 
    157156        $templatePath = $this->objLayout->getTemplatePath($device_type_id); 
    158         $arrPageData[0]['tpl_data'] = file_get_contents($templatePath . $arrPageData[0]['tpl_dir'] . $arrPageData[0]['filename'] . ".tpl"); 
     157        $arrPageData[0]['tpl_data'] = file_get_contents($templatePath . $arrPageData[0]['filename'] . ".tpl"); 
    159158 
    160159        // チェックボックスの値変更 
     
    163162 
    164163        // ディレクトリを画面表示用に編集 
    165         $arrPageData[0]['directory'] = str_replace(USER_DIR, '', $arrPageData[0]['php_dir']); 
     164        $arrPageData[0]['filename'] = preg_replace('|^' . preg_quote(USER_DIR) . '|', '', $arrPageData[0]['filename']); 
    166165 
    167166        return $arrPageData[0]; 
     
    181180        $url = 'preview/index'; 
    182181 
    183         $tmpPost = $_POST; 
    184         $tmpPost['page_id'] = $page_id; 
    185         $tmpPost['url'] = $url; 
    186         $tmpPost['tpl_dir'] = "{$url}.tpl"; 
    187  
    188182        $arrPreData = $this->objLayout->lfGetPageData("page_id = ? AND device_type_id = ?", 
    189183                                                      array($page_id, $device_type_id)); 
    190184 
    191185        // DBへデータを更新する 
    192         $this->lfEntryPageData($tmpPost, $device_type_id); 
     186        $this->lfEntryPageData( 
     187            $device_type_id, 
     188            $page_id, 
     189            $_POST['page_name'], 
     190            $url, 
     191            $_POST['header_chk'], 
     192            $_POST['footer_chk'] 
     193        ); 
    193194 
    194195        // TPLファイル作成 
     
    230231        if (count($this->arrErr) == 0) { 
    231232            // DBへデータを更新する 
    232             $arrTmp = $this->lfEntryPageData($_POST, $device_type_id); 
     233            $arrTmp = $this->lfEntryPageData( 
     234                $device_type_id, 
     235                $page_id, 
     236                $_POST['page_name'], 
     237                USER_DIR . $_POST['url'], 
     238                $_POST['header_chk'], 
     239                $_POST['footer_chk'] 
     240            ); 
    233241            $page_id = $arrTmp['page_id']; 
    234242 
     
    243251 
    244252            // TPLファイル作成 
    245             $cre_tpl = $this->objLayout->getTemplatePath($device_type_id) . $arrData['tpl_dir'] . $arrData['filename'] . '.tpl'; 
     253            $cre_tpl = $this->objLayout->getTemplatePath($device_type_id) . $arrData['filename'] . '.tpl'; 
    246254            $this->lfCreateFile($cre_tpl, $_POST['tpl_data']); 
    247255 
     
    266274     * ブロック情報を更新する. 
    267275     * 
    268      * @param array $arrData 基となる更新データ 
     276     * @param integer $device_type_id 
     277     * @param integer $page_id 
     278     * @param string $page_name 
     279     * @param string $filename 
     280     * @param integer $header_chk 
     281     * @param integer $footer_chk 
    269282     * @return array 実際に使用した更新データ 
    270283     */ 
    271     function lfEntryPageData($arrData, $device_type_id){ 
     284    function lfEntryPageData($device_type_id, $page_id, $page_name, $filename, $header_chk, $footer_chk) { 
    272285        $objQuery = new SC_Query(); 
    273286        $arrChk = array();          // 排他チェック用 
    274287 
    275         // 更新データの変換 
    276         $sqlval = $this->lfGetUpdData($arrData, $device_type_id); 
     288        // 更新データの変換 
     289        $sqlval = $this->lfGetUpdData($device_type_id, $page_id, $page_name, $filename, $header_chk, $footer_chk); 
    277290 
    278291        // データが存在しているかチェックを行う 
    279         if($arrData['page_id'] !== ''){ 
     292        if ($page_id !== ''){ 
    280293            $arrChk = $this->objLayout->lfGetPageData("page_id = ? AND device_type_id = ?", 
    281                                                       array($arrData['page_id'], $device_type_id)); 
     294                                                      array($page_id, $device_type_id)); 
    282295        } 
    283296 
    284297        // page_id が空 若しくは データが存在していない場合にはINSERTを行う 
    285         if ($arrData['page_id'] === '' || !isset($arrChk[0])) { 
     298        if ($page_id === '' || !isset($arrChk[0])) { 
    286299            // FIXME device_type_id ごとの連番にする 
    287300            $sqlval['page_id'] = $objQuery->nextVal('dtb_pagelayout_page_id'); 
     
    293306        else { 
    294307            $objQuery->update('dtb_pagelayout', $sqlval, 'page_id = ? AND device_type_id = ?', 
    295                               array($arrData['page_id'], $device_type_id)); 
     308                              array($page_id, $device_type_id)); 
    296309            // 戻り値用 
    297             $sqlval['page_id'] = $arrData['page_id']; 
     310            $sqlval['page_id'] = $page_id; 
    298311        } 
    299312        return $sqlval; 
     
    303316     * DBへ更新を行うデータを生成する. 
    304317     * 
    305      * @param array $arrData 更新データ 
     318     * @param integer $device_type_id 
     319     * @param integer $page_id 
     320     * @param string $page_name 
     321     * @param string $filename 
     322     * @param integer $header_chk 
     323     * @param integer $footer_chk 
    306324     * @return array 更新データ 
    307325     */ 
    308     function lfGetUpdData($arrData, $device_type_id) { 
     326    function lfGetUpdData($device_type_id, $page_id, $page_name, $filename, $header_chk, $footer_chk) { 
    309327        $arrUpdData = array( 
    310             'header_chk'    => SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk']),   // ヘッダー使用 
    311             'footer_chk'    => SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk']),   // フッター使用 
    312             'update_url'    => $_SERVER['HTTP_REFERER'],                                // 更新URL 
     328            'header_chk'    => SC_Utils_Ex::sfChangeCheckBox($header_chk),  // ヘッダー使用 
     329            'footer_chk'    => SC_Utils_Ex::sfChangeCheckBox($footer_chk),  // フッター使用 
     330            'update_url'    => $_SERVER['HTTP_REFERER'],                    // 更新URL 
    313331            'update_date'   => 'now()', 
    314332        ); 
    315333 
    316334        // ベースデータの場合には変更しない。 
    317         if (!$this->objLayout->lfCheckBaseData($arrData['page_id'], $device_type_id)) { 
    318             $arrUpdData['page_name']    = $arrData['page_name'] ; 
    319             $arrUpdData['url']          = preg_replace('|^' . preg_quote(ROOT_URLPATH) . '|', '', $arrData['url'] . '.php'); 
    320             $arrUpdData['php_dir']      = dirname($arrUpdData['url']); 
    321             if ($arrUpdData['php_dir'] == '.') { 
    322                 $arrUpdData['php_dir'] = ''; 
    323             } else { 
    324                 $arrUpdData['php_dir'] .= '/'; 
    325             } 
    326             $arrUpdData['tpl_dir']      = $arrUpdData['php_dir']; 
    327             $arrUpdData['filename']     = basename($arrData['url']); // 拡張子を付加しない 
     335        if (!$this->objLayout->lfCheckBaseData($page_id, $device_type_id)) { 
     336            $arrUpdData['page_name']    = $page_name; 
     337            $arrUpdData['url']          = $filename . '.php'; 
     338            $arrUpdData['filename']     = $filename; // 拡張子を付加しない 
    328339        } 
    329340 
Note: See TracChangeset for help on using the changeset viewer.