Changeset 19966


Ignore:
Timestamp:
2011/01/19 14:20:39 (10 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:19965
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/class/pages/admin/design/LC_Page_Admin_Design_Template.php 16430@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_Template.php
data/class/pages/admin/design/LC_Page_Admin_Design_Up_Down.php 16677@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_Up_Down.php
data/mtb_constants_init.php 16505@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fmtb_constants_init.php
html/install/sql/create_table_mysql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_mysql.sql
html/install/sql/create_table_pgsql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_pgsql.sql
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql
bzr:mapping-version:
v4
bzr:merge:

ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20110119052036-djhmmdrf0dtm52gp
bzr:revno:
2695
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-revisions:

data/class/pages/admin/design/LC_Page_Admin_Design_Template.php ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
data/class/pages/admin/design/LC_Page_Admin_Design_Up_Down.php ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
data/mtb_constants_init.php ohkouchi@loop-az.jp-20110119025119-1ia8tvnnvxr55rdf
html/install/sql/create_table_mysql.sql ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
html/install/sql/create_table_pgsql.sql ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
html/install/sql/insert_data.sql ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
bzr:timestamp:
2011-01-19 14:20:36.427000046 +0900
bzr:user-agent:
bzr2.2.1+bzr-svn1.0.4
svn:original-date:
2011-01-19T05:20:36.427000Z
Message:

#748(モバイル/スマートフォンのデザイン管理)

  • テンプレート設定/追加を修正
Location:
branches/version-2_5-dev
Files:
6 edited

Legend:

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

    r19807 r19966  
    5353        $this->arrErr  = array(); 
    5454        $this->arrForm = array(); 
    55         $this->tpl_select = TEMPLATE_NAME; 
    5655        ini_set("max_execution_time", 300); 
    5756    } 
     
    7675    function action() { 
    7776        // 認証可否の判定 
    78             $objSession = new SC_Session(); 
    79             SC_Utils::sfIsSuccess($objSession); 
    80  
    81             // uniqidをテンプレートへ埋め込み 
    82             $this->uniqid = $objSession->getUniqId(); 
    83  
    84             $objView = new SC_AdminView(); 
    85  
    86             switch($this->lfGetMode()) { 
     77        $objSession = new SC_Session(); 
     78        SC_Utils::sfIsSuccess($objSession); 
     79 
     80        // 端末種別IDを取得 
     81        if (isset($_REQUEST['device_type_id']) 
     82            && is_numeric($_REQUEST['device_type_id'])) { 
     83            $device_type_id = $_REQUEST['device_type_id']; 
     84        } else { 
     85            $device_type_id = DEVICE_TYPE_PC; 
     86        } 
     87 
     88        $this->tpl_select = $this->getTemplateName($device_type_id); 
     89 
     90        // uniqidをテンプレートへ埋め込み 
     91        $this->uniqid = $objSession->getUniqId(); 
     92 
     93        $objView = new SC_AdminView(); 
     94 
     95        switch($this->lfGetMode()) { 
    8796 
    8897            // 登録ボタン押下時 
    89             case 'register': 
    90                 // 画面遷移の正当性チェック 
    91                 if (!SC_Utils::sfIsValidTransition($objSession)) { 
    92                     sfDispError(''); 
    93                 } 
    94                 // パラメータ検証 
    95                 $objForm = $this->lfInitRegister(); 
    96                 if ($objForm->checkError()) { 
    97                     SC_Utils_Ex::sfDispError(''); 
    98                 } 
    99  
    100                 $template_code = $objForm->getValue('template_code'); 
    101                 $this->tpl_select = $template_code; 
    102  
    103                 if($template_code == "") { 
    104                     $template_code = "default"; 
    105                 } 
    106  
    107                 // DBへ使用するテンプレートを登録 
    108                 $this->lfRegisterTemplate($template_code); 
    109  
    110                 // XXX コンパイルファイルのクリア処理を行う 
    111                 $objView->_smarty->clear_compiled_tpl(); 
    112  
    113                 // common.cssの内容を更新 
    114                 $this->lfChangeCommonCss($template_code); 
     98        case 'register': 
     99            // 画面遷移の正当性チェック 
     100            if (!SC_Utils::sfIsValidTransition($objSession)) { 
     101                sfDispError(''); 
     102            } 
     103            // パラメータ検証 
     104            $objForm = $this->lfInitRegister(); 
     105            if ($objForm->checkError()) { 
     106                SC_Utils_Ex::sfDispError(''); 
     107            } 
     108 
     109            $template_code = $objForm->getValue('template_code'); 
     110            $this->tpl_select = $template_code; 
     111 
     112            if($template_code == "") { 
     113                $template_code = $this->getTemplateName($device_type_id, true); 
     114            } 
     115 
     116            // DBへ使用するテンプレートを登録 
     117            $this->lfRegisterTemplate($template_code); 
     118 
     119            // XXX コンパイルファイルのクリア処理を行う 
     120            $objView->_smarty->clear_compiled_tpl(); 
     121 
     122            // ブロック位置を更新 
     123            $this->lfChangeBloc($template_code); 
     124 
     125            // 完了メッセージ 
     126            $this->tpl_onload="alert('登録が完了しました。');"; 
     127            break; 
     128 
     129            // 削除ボタン押下時 
     130        case 'delete': 
     131            // 画面遷移の正当性チェック 
     132            if (!SC_Utils::sfIsValidTransition($objSession)) { 
     133                SC_Utils::sfDispError(''); 
     134            } 
     135            // パラメータ検証 
     136            $objForm = $this->lfInitDelete(); 
     137            if ($objForm->checkError()) { 
     138                SC_Utils::sfDispError(''); 
     139            } 
    115140                 
    116                 // テンプレートのコピー 
    117                 $this->lfCopyTemplate($template_code); 
    118                  
    119                 // ブロック位置を更新 
    120                 $this->lfChangeBloc($template_code); 
    121  
    122                 // 完了メッセージ 
    123                 $this->tpl_onload="alert('登録が完了しました。');"; 
     141            //現在使用中のテンプレートとデフォルトのテンプレートは削除できないようにする 
     142            $template_code = $objForm->getValue('template_code_temp'); 
     143            if ($template_code == $this->getTemplateName($device_type_id) 
     144                || $template_code == $this->getTemplateName($device_type_id, true)) { 
     145                $this->tpl_onload = "alert('デフォルトテンプレートと、選択中のテンプレートは削除出来ません');"; 
    124146                break; 
    125  
    126             // 削除ボタン押下時 
    127             case 'delete': 
    128                 // 画面遷移の正当性チェック 
    129                 if (!SC_Utils::sfIsValidTransition($objSession)) { 
    130                     SC_Utils::sfDispError(''); 
    131                 } 
    132                 // パラメータ検証 
    133                 $objForm = $this->lfInitDelete(); 
    134                 if ($objForm->checkError()) { 
    135                     SC_Utils::sfDispError(''); 
    136                 } 
    137                  
    138                 //現在使用中のテンプレートとデフォルトのテンプレートは削除できないようにする 
    139                 $template_code = $objForm->getValue('template_code_temp'); 
    140                 if ($template_code == TEMPLATE_NAME || $template_code == DEFAULT_TEMPLATE_NAME) { 
    141                     $this->tpl_onload = "alert('選択中のテンプレートは削除出来ません');"; 
    142                     break; 
    143                 } 
    144                 $this->lfDeleteTemplate($template_code); 
    145                 break; 
     147            } 
     148            $this->lfDeleteTemplate($template_code); 
     149            break; 
    146150 
    147151            // downloadボタン押下時 
    148             case 'download': 
    149                 // 画面遷移の正当性チェック 
    150                 if (!SC_Utils::sfIsValidTransition($objSession)) { 
    151                     SC_Utils::sfDispError(''); 
    152                 } 
    153                 // パラメータ検証 
    154                 $objForm = $this->lfInitDownload(); 
    155                 $template_code = $objForm->getValue('template_code_temp'); 
    156                 // ユーザデータの下のファイルも保存する。 
    157                 $from_dir = USER_TEMPLATE_REALDIR . $template_code . "/"; 
    158                 $to_dir = SMARTY_TEMPLATES_REALDIR . $template_code . "/_packages/"; 
    159                 SC_Utils::sfMakeDir($to_dir); 
    160                 SC_Utils::sfCopyDir($from_dir, $to_dir); 
    161                 SC_Helper_FileManager::downloadArchiveFiles(SMARTY_TEMPLATES_REALDIR . $template_code); 
    162                 break; 
     152        case 'download': 
     153            // 画面遷移の正当性チェック 
     154            if (!SC_Utils::sfIsValidTransition($objSession)) { 
     155                SC_Utils::sfDispError(''); 
     156            } 
     157            // パラメータ検証 
     158            $objForm = $this->lfInitDownload(); 
     159            $template_code = $objForm->getValue('template_code_temp'); 
     160            // ユーザデータの下のファイルも保存する。 
     161            $from_dir = USER_TEMPLATE_REALDIR . $template_code . "/"; 
     162            $to_dir = SMARTY_TEMPLATES_REALDIR . $template_code . "/_packages/"; 
     163            SC_Utils::sfMakeDir($to_dir); 
     164            SC_Utils::sfCopyDir($from_dir, $to_dir); 
     165            SC_Helper_FileManager::downloadArchiveFiles(SMARTY_TEMPLATES_REALDIR . $template_code); 
     166            break; 
    163167 
    164168            // プレビューボタン押下時 
    165             case 'preview': 
    166                 break; 
    167  
    168             default: 
    169                 break; 
    170             } 
    171  
    172             // defaultパラメータのセット 
    173             $this->templates = $this->lfGetAllTemplates(); 
    174             $this->now_template = TEMPLATE_NAME; 
    175             $this->device_type_id = $device_type_id; 
     169        case 'preview': 
     170            break; 
     171 
     172        default: 
     173            break; 
     174        } 
     175 
     176        $this->templates = $this->lfGetAllTemplates($device_type_id); 
     177        $this->now_template = TEMPLATE_NAME; 
     178        $this->device_type_id = $device_type_id; 
    176179    } 
    177180 
     
    225228     * 使用するテンプレートをDBへ登録する 
    226229     */ 
    227     function lfRegisterTemplate($template_code) { 
     230    function lfRegisterTemplate($template_code, $device_type_id) { 
    228231        $masterData = new SC_DB_MasterData_Ex(); 
    229232 
    230         $data = array('TEMPLATE_NAME' => var_export($template_code, TRUE)); 
     233        $defineName = 'TEMPLATE_NAME'; 
     234        switch ($device_type_id) { 
     235        case DEVICE_TYPE_MOBILE: 
     236            $defineName = 'MOBILE_' . $defineName; 
     237            break; 
     238 
     239        case DEVICE_TYPE_SMARTPHONE: 
     240            $defineName = 'SMARTPHONE_' . $defineName; 
     241            break; 
     242        case DEVICE_TYPE_PC: 
     243        default: 
     244        } 
     245 
     246        $data = array($defineName => var_export($template_code, TRUE)); 
    231247 
    232248        // DBのデータを更新 
     
    236252        $masterData->createCache('mtb_constants', array(), true, array('id', 'remarks')); 
    237253    } 
    238  
    239     /** 
    240      * common.cssの更新 
    241      */ 
    242     function lfChangeCommonCss($template_code) { 
    243         $css_path = USER_REALDIR . "css/common.css"; 
    244          
    245         // ファイル内容取得 
    246         $css_data = file_get_contents($css_path); 
    247          
    248         // ファイル内容更新 
    249         $pt = '/(@import url\("\.\.\/packages\/.+\/css\/import\.css"\);)/'; 
    250         $rp = '@import url("../packages/'. $template_code. '/css/import.css");'; 
    251         $css = preg_replace($pt, $rp, $css_data); 
    252          
    253         // ファイル更新 
    254         $fp = fopen($css_path,"w"); 
    255         fwrite($fp, $css); 
    256         fclose($fp); 
    257     } 
    258254     
    259255    /** 
     
    262258    function lfChangeBloc($template_code) { 
    263259        $objQuery = new SC_Query(); 
    264         $filepath = USER_TEMPLATE_REALDIR. $template_code. "/sql/update_bloc.sql"; 
     260        /* 
     261         * FIXME 各端末に合わせて作成する必要あり 
     262         * $filepath = USER_TEMPLATE_REALDIR. $template_code. "/sql/update_bloc.sql"; 
     263         */ 
    265264         
    266265        // ブロック位置更新SQLファイル有 
     
    299298    } 
    300299 
    301     function lfGetAllTemplates() { 
     300    function lfGetAllTemplates($device_type_id) { 
    302301        $objQuery = new SC_Query(); 
    303         $arrRet = $objQuery->select('*', 'dtb_templates'); 
     302        $arrRet = $objQuery->select('*', 'dtb_templates', "device_type_id = ?", array($device_type_id)); 
    304303        if (empty($arrRet)) return array(); 
    305304 
     
    307306    } 
    308307 
    309    /* 
    310      * 関数名:lfCreateTemplate() 
    311      * 引数1 :ディレクトリパス 
    312      * 引数2 :作成ファイル名 
    313      * 説明 :キャンペーンの初期テンプレート作成 
    314      * 戻り値:無し 
    315      */ 
    316     function lfCreateTemplate($dir, $file , $cart_flg) { 
    317         umask(0); 
    318         $objFileManager = new SC_Helper_FileManager_Ex(); 
    319          
    320         // 作成ファイルディレクトリ 
    321         $create_dir = $dir . $file; 
    322         $create_active_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE; 
    323         $create_end_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_END; 
    324         // デフォルトファイルディレクトリ 
    325         $default_dir = TEMPLATE_REALDIR . CAMPAIGN_TEMPLATE_REALDIR; 
    326         $default_active_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE; 
    327         $default_end_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_END; 
    328  
    329         $ret = $objFileManager->sfCreateFile($create_dir, 0755); 
    330         $ret = $objFileManager->sfCreateFile($create_active_dir, 0755); 
    331         $ret = $objFileManager->sfCreateFile($create_end_dir, 0755); 
    332  
    333         // キャンペーン実行PHPをコピー 
    334         $ret = $objFileManager->sfCreateFile(CAMPAIGN_PATH . $file); 
    335         copy(HTML_REALDIR . CAMPAIGN_TEMPLATE_REALDIR . "index.php", CAMPAIGN_PATH . $file . "/index.php"); 
    336         copy(HTML_REALDIR . CAMPAIGN_TEMPLATE_REALDIR . "application.php", CAMPAIGN_PATH . $file . "/application.php"); 
    337         copy(HTML_REALDIR . CAMPAIGN_TEMPLATE_REALDIR . "complete.php", CAMPAIGN_PATH . $file . "/complete.php"); 
    338         copy(HTML_REALDIR . CAMPAIGN_TEMPLATE_REALDIR . "entry.php", CAMPAIGN_PATH . $file . "/entry.php"); 
    339  
    340         // デフォルトテンプレート作成(キャンペーン中) 
    341         $header = $this->lfGetFileContents($default_active_dir."header.tpl"); 
    342         SC_Utils_Ex::sfWriteFile($header, $create_active_dir."header.tpl", "w"); 
    343         $contents = $this->lfGetFileContents($default_active_dir."contents.tpl"); 
    344         if(!$cart_flg) { 
    345             $contents .= "\n" . '<!--{*ログインフォーム*}-->' . "\n"; 
    346             $contents .= $this->lfGetFileContents(CAMPAIGN_BLOC_PATH . "login.tpl"); 
    347             $contents .= '<!--{*会員登録フォーム*}-->'."\n"; 
    348             $contents .= $this->lfGetFileContents(CAMPAIGN_BLOC_PATH . "entry.tpl"); 
    349         } 
    350         SC_Utils_Ex::sfWriteFile($contents, $create_active_dir."contents.tpl", "w"); 
    351         $footer = $this->lfGetFileContents($default_active_dir."footer.tpl"); 
    352         SC_Utils_Ex::sfWriteFile($footer, $create_active_dir."footer.tpl", "w"); 
    353  
    354         // サイトフレーム作成 
    355         $site_frame  = $header."\n"; 
    356         $site_frame .= '<script type="text/javascript" src="<!--{$TPL_DIR}-->js/navi.js"></script>'."\n"; 
    357         $site_frame .= '<script type="text/javascript" src="<!--{$TPL_DIR}-->js/site.js"></script>'."\n"; 
    358         $site_frame .= '<!--{include file=$tpl_mainpage}-->'."\n"; 
    359         $site_frame .= $footer."\n"; 
    360         SC_Utils_Ex::sfWriteFile($site_frame, $create_active_dir."site_frame.tpl", "w"); 
    361  
    362         /* デフォルトテンプレート作成(キャンペーン終了) */ 
    363         $header = $this->lfGetFileContents($default_end_dir."header.tpl"); 
    364         SC_Utils_Ex::sfWriteFile($header, $create_end_dir."header.tpl", "w"); 
    365         $contents = $this->lfGetFileContents($default_end_dir."contents.tpl"); 
    366         SC_Utils_Ex::sfWriteFile($contents, $create_end_dir."contents.tpl", "w"); 
    367         $footer = $this->lfGetFileContents($default_end_dir."footer.tpl"); 
    368         SC_Utils_Ex::sfWriteFile($footer, $create_end_dir."footer.tpl", "w"); 
    369     } 
    370      
    371308    /* 
    372309     * 関数名:lfGetFileContents() 
     
    385322        return $contents; 
    386323    } 
     324 
     325    /** 
     326     * テンプレート名を返す. 
     327     */ 
     328    function getTemplateName($device_type_id, $isDefault = false) { 
     329        switch ($device_type_id) { 
     330        case DEVICE_TYPE_MOBILE: 
     331            return $isDefault ? MOBILE_DEFAULT_TEMPLATE_NAME : MOBILE_TEMPLATE_NAME; 
     332            break; 
     333 
     334        case DEVICE_TYPE_SMARTPHONE: 
     335            return $isDefault ? SMARTPHONE_DEFAULT_TEMPLATE_NAME : SMARTPHONE_TEMPLATE_NAME; 
     336            break; 
     337 
     338        case DEVICE_TYPE_PC: 
     339        default: 
     340        } 
     341        return $isDefault ? DEFAULT_TEMPLATE_NAME : TEMPLATE_NAME; 
     342    } 
    387343} 
    388344?> 
  • branches/version-2_5-dev/data/class/pages/admin/design/LC_Page_Admin_Design_Up_Down.php

    r19807 r19966  
    4646    function init() { 
    4747        parent::init(); 
    48         $this->tpl_mainpage = 'design/up_down.tpl'; 
    49         $this->tpl_subnavi  = 'design/subnavi.tpl'; 
    50         $this->tpl_subno    = 'up_down'; 
    51         $this->tpl_mainno   = "design"; 
    52         $this->tpl_subtitle = 'テンプレート追加'; 
    53         $this->arrErr  = array(); 
    54         $this->arrForm = array(); 
    55         ini_set("max_execution_time", 300); 
     48        $this->tpl_mainpage = 'design/up_down.tpl'; 
     49        $this->tpl_subnavi  = 'design/subnavi.tpl'; 
     50        $this->tpl_subno    = 'up_down'; 
     51        $this->tpl_mainno   = "design"; 
     52        $this->tpl_subtitle = 'テンプレート追加'; 
     53        $this->arrErr  = array(); 
     54        $this->arrForm = array(); 
     55        ini_set("max_execution_time", 300); 
    5656    } 
    5757 
     
    7575    function action() { 
    7676        // ログインチェック 
    77             $objSession = new SC_Session(); 
    78             SC_Utils::sfIsSuccess($objSession); 
    79             $this->now_template = $this->lfGetNowTemplate(); 
    80              
    81             // uniqidをテンプレートへ埋め込み 
    82             $this->uniqid = $objSession->getUniqId(); 
    83              
    84             switch($this->lfGetMode()) { 
    85              
    86             // ダウンロードボタン押下時の処理 
    87             case 'download': 
    88                 break; 
    89             // アップロードボタン押下時の処理 
    90             case 'upload': 
    91                 // 画面遷移の正当性チェック 
    92                 if (!SC_Utils::sfIsValidTransition($objSession)) { 
    93                     SC_Utils::sfDispError(''); 
    94                 } 
    95                 // フォームパラメータ初期化 
    96                 $objForm = $this->lfInitUpload(); 
    97                 // エラーチェック 
    98                 if ($arrErr = $this->lfValidateUpload($objForm)) { 
    99                     $this->arrErr  = $arrErr; 
    100                     $this->arrForm = $objForm->getFormParamList(); 
    101                     break; 
    102                 } 
    103                 // アップロードファイル初期化 
    104                 $objUpFile = $this->lfInitUploadFile($objForm); 
    105                 // 一時ファイルへ保存 
    106                 $errMsg = $objUpFile->makeTempFile('template_file', false); 
    107                 // 書き込みエラーチェック 
    108                 if(isset($errMsg)) { 
    109                     $this->arrErr['template_file'] = $errMsg; 
    110                     $this->arrForm = $objForm->getFormParamList(); 
    111                     break; 
    112                 } 
    113                 $this->lfAddTemplates($objForm, $objUpFile); 
    114                 $this->tpl_onload = "alert('テンプレートファイルをアップロードしました。');"; 
    115                 break; 
    116              
    117             // 初回表示 
    118             default: 
    119                 break; 
    120             } 
    121             $this->device_type_id = $device_type_id; 
     77        $objSession = new SC_Session(); 
     78        SC_Utils::sfIsSuccess($objSession); 
     79 
     80        // 端末種別IDを取得 
     81        if (isset($_REQUEST['device_type_id']) 
     82            && is_numeric($_REQUEST['device_type_id'])) { 
     83            $device_type_id = $_REQUEST['device_type_id']; 
     84        } else { 
     85            $device_type_id = DEVICE_TYPE_PC; 
     86        } 
     87 
     88 
     89        // uniqidをテンプレートへ埋め込み 
     90        $this->uniqid = $objSession->getUniqId(); 
     91 
     92        switch($this->lfGetMode()) { 
     93 
     94            // ダウンロードボタン押下時の処理 
     95        case 'download': 
     96            break; 
     97            // アップロードボタン押下時の処理 
     98        case 'upload': 
     99            // 画面遷移の正当性チェック 
     100            if (!SC_Utils::sfIsValidTransition($objSession)) { 
     101                SC_Utils::sfDispError(''); 
     102            } 
     103            // フォームパラメータ初期化 
     104            $objForm = $this->lfInitUpload(); 
     105            // エラーチェック 
     106            if ($arrErr = $this->lfValidateUpload($objForm)) { 
     107                $this->arrErr  = $arrErr; 
     108                $this->arrForm = $objForm->getFormParamList(); 
     109                break; 
     110            } 
     111            // アップロードファイル初期化 
     112            $objUpFile = $this->lfInitUploadFile($objForm); 
     113            // 一時ファイルへ保存 
     114            $errMsg = $objUpFile->makeTempFile('template_file', false); 
     115            // 書き込みエラーチェック 
     116            if(isset($errMsg)) { 
     117                $this->arrErr['template_file'] = $errMsg; 
     118                $this->arrForm = $objForm->getFormParamList(); 
     119                break; 
     120            } 
     121            $this->lfAddTemplates($objForm, $objUpFile, $device_type_id); 
     122            $this->tpl_onload = "alert('テンプレートファイルをアップロードしました。');"; 
     123            break; 
     124 
     125            // 初回表示 
     126        default: 
     127            break; 
     128        } 
     129        $this->device_type_id = $device_type_id; 
    122130    } 
    123131 
     
    131139    } 
    132140 
    133     /** 
    134      * POSTされるmodeパラメータを取得する. 
    135      * 
    136      * @param void 
    137      * @return string modeパラメータ, 無ければnull 
    138      */ 
    139     function lfGetMode(){ 
    140         if (isset($_POST['mode'])) return $_POST['mode']; 
    141     } 
    142     /** 
    143      * SC_UploadFileクラスの初期化. 
    144      * 
    145      * @param object $objForm SC_FormParamのインスタンス 
    146      * @return object SC_UploadFileのインスタンス 
    147      */ 
    148     function lfInitUploadFile($objForm) { 
    149         $pkg_dir = SMARTY_TEMPLATES_REALDIR . $objForm->getValue('template_code'); 
    150         $objUpFile = new SC_UploadFile(TEMPLATE_TEMP_REALDIR, $pkg_dir); 
    151         $objUpFile->addFile("テンプレートファイル", 'template_file', array(), TEMPLATE_SIZE, true, 0, 0, false); 
    152      
    153         return $objUpFile; 
    154     } 
    155     /** 
    156      * SC_FormParamクラスの初期化. 
    157      * 
    158      * @param void 
    159      * @return object SC_FormParamのインスタンス 
    160      */ 
    161     function lfInitUpload() { 
    162         $objForm = new SC_FormParam; 
    163      
    164         $objForm->addParam("テンプレートコード", "template_code", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "ALNUM_CHECK")); 
    165         $objForm->addParam("テンプレート名", "template_name", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
    166         $objForm->setParam($_POST); 
    167      
    168         return $objForm; 
    169     } 
    170     /** 
    171      * uploadモードのパラメータ検証を行う. 
    172      * 
    173      * @param object $objForm SC_FormParamのインスタンス 
    174      * @return array エラー情報を格納した連想配列, エラーが無ければ(多分)nullを返す 
    175      */ 
    176     function lfValidateUpload($objForm) { 
    177         $arrErr = $objForm->checkError(); 
    178         if (!empty($arrErr)) { 
    179             return $arrErr; 
    180         } 
    181      
    182         $arrForm = $objForm->getHashArray(); 
    183      
    184         // 同名のフォルダが存在する場合はエラー 
    185         if(file_exists(USER_TEMPLATE_REALDIR . $arrForm['template_code'])) { 
    186             $arrErr['template_code'] = "※ 同名のファイルがすでに存在します。<br/>"; 
    187         } 
    188      
    189         // 登録不可の文字列チェック 
    190         $arrIgnoreCode = array( 
    191             'admin', 'mobile', 'default' 
    192         ); 
    193         if(in_array($arrForm['template_code'], $arrIgnoreCode)) { 
    194             $arrErr['template_code'] = "※ このテンプレートコードは使用できません。<br/>"; 
    195         } 
    196      
    197         // DBにすでに登録されていないかチェック 
    198         $objQuery = new SC_Query(); 
    199         $ret = $objQuery->count("dtb_templates", "template_code = ?", array($arrForm['template_code'])); 
    200         if(!empty($ret)) { 
    201             $arrErr['template_code'] = "※ すでに登録されているテンプレートコードです。<br/>"; 
    202         } 
    203      
    204         // ファイルの拡張子チェック(.tar/tar.gzのみ許可) 
    205         $errFlag = true; 
    206         $array_ext = explode(".", $_FILES['template_file']['name']); 
    207         $ext = $array_ext[ count ( $array_ext ) - 1 ]; 
    208         $ext = strtolower($ext); 
    209         // .tarチェック 
    210         if ($ext == 'tar') { 
    211             $errFlag = false; 
    212         } 
    213         $ext = $array_ext[ count ( $array_ext ) - 2 ].".".$ext; 
    214         $ext = strtolower($ext); 
    215         // .tar.gzチェック 
    216         if ($ext== 'tar.gz') { 
    217             $errFlag = false; 
    218         } 
    219      
    220         if($errFlag) { 
    221             $arrErr['template_file'] = "※ アップロードするテンプレートファイルで許可されている形式は、tar/tar.gzです。<br />"; 
    222         } 
    223      
    224         return $arrErr; 
    225     } 
    226     /** 
    227      * DBおよびTPL_PKG_PATHにテンプレートパッケージを追加する. 
    228      * 
    229      * @param object $objForm SC_FormParamのインスタンス 
    230      * @param object $objUpFile SC_UploadFileのインスタンス 
    231      * @return void 
    232      */ 
    233     function lfAddTemplates($objForm, $objUpFile) { 
    234         $template_code = $objForm->getValue('template_code'); 
    235         $template_dir = SMARTY_TEMPLATES_REALDIR . $template_code; 
    236         $compile_dir  = DATA_REALDIR . "Smarty/templates_c/" . $template_code; 
    237         // フォルダ作成 
    238         if(!file_exists($template_dir)) { 
    239             mkdir($template_dir); 
    240         } 
    241         if(!file_exists($compile_dir)) { 
    242             mkdir($compile_dir); 
    243         } 
    244                  
    245         // 一時フォルダから保存ディレクトリへ移動 
    246         $objUpFile->moveTempFile(); 
    247          
    248         // 解凍 
    249         SC_Helper_FileManager::unpackFile($template_dir . "/" . $_FILES['template_file']['name']); 
    250         // ユーザデータの下のファイルをコピーする 
    251         $from_dir = SMARTY_TEMPLATES_REALDIR . $template_code . "/_packages/";       
    252         $to_dir = USER_REALDIR . "packages/" . $template_code . "/"; 
    253         SC_Utils::sfMakeDir($to_dir); 
     141    /** 
     142     * POSTされるmodeパラメータを取得する. 
     143     * 
     144     * @param void 
     145     * @return string modeパラメータ, 無ければnull 
     146     */ 
     147    function lfGetMode(){ 
     148        if (isset($_POST['mode'])) return $_POST['mode']; 
     149    } 
     150    /** 
     151     * SC_UploadFileクラスの初期化. 
     152     * 
     153     * @param object $objForm SC_FormParamのインスタンス 
     154     * @return object SC_UploadFileのインスタンス 
     155     */ 
     156    function lfInitUploadFile($objForm) { 
     157        $pkg_dir = SMARTY_TEMPLATES_REALDIR . $objForm->getValue('template_code'); 
     158        $objUpFile = new SC_UploadFile(TEMPLATE_TEMP_REALDIR, $pkg_dir); 
     159        $objUpFile->addFile("テンプレートファイル", 'template_file', array(), TEMPLATE_SIZE, true, 0, 0, false); 
     160 
     161        return $objUpFile; 
     162    } 
     163    /** 
     164     * SC_FormParamクラスの初期化. 
     165     * 
     166     * @param void 
     167     * @return object SC_FormParamのインスタンス 
     168     */ 
     169    function lfInitUpload() { 
     170        $objForm = new SC_FormParam; 
     171 
     172        $objForm->addParam("テンプレートコード", "template_code", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "ALNUM_CHECK")); 
     173        $objForm->addParam("テンプレート名", "template_name", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
     174        $objForm->setParam($_POST); 
     175 
     176        return $objForm; 
     177    } 
     178    /** 
     179     * uploadモードのパラメータ検証を行う. 
     180     * 
     181     * @param object $objForm SC_FormParamのインスタンス 
     182     * @return array エラー情報を格納した連想配列, エラーが無ければ(多分)nullを返す 
     183     */ 
     184    function lfValidateUpload($objForm) { 
     185        $arrErr = $objForm->checkError(); 
     186        if (!empty($arrErr)) { 
     187            return $arrErr; 
     188        } 
     189 
     190        $arrForm = $objForm->getHashArray(); 
     191 
     192        // 同名のフォルダが存在する場合はエラー 
     193        if(file_exists(USER_TEMPLATE_REALDIR . $arrForm['template_code'])) { 
     194            $arrErr['template_code'] = "※ 同名のファイルがすでに存在します。<br/>"; 
     195        } 
     196 
     197        // 登録不可の文字列チェック 
     198        $arrIgnoreCode = array('admin', 
     199                               MOBILE_DEFAULT_TEMPLATE_NAME, 
     200                               SMARTPHONE_DEFAULT_TEMPLATE_NAME, 
     201                               DEFAULT_TEMPLATE_NAME); 
     202        if(in_array($arrForm['template_code'], $arrIgnoreCode)) { 
     203            $arrErr['template_code'] = "※ このテンプレートコードは使用できません。<br/>"; 
     204        } 
     205 
     206        // DBにすでに登録されていないかチェック 
     207        $objQuery = new SC_Query(); 
     208        $ret = $objQuery->count("dtb_templates", "template_code = ?", array($arrForm['template_code'])); 
     209        if(!empty($ret)) { 
     210            $arrErr['template_code'] = "※ すでに登録されているテンプレートコードです。<br/>"; 
     211        } 
     212 
     213        // ファイルの拡張子チェック(.tar/tar.gzのみ許可) 
     214        $errFlag = true; 
     215        $array_ext = explode(".", $_FILES['template_file']['name']); 
     216        $ext = $array_ext[ count ( $array_ext ) - 1 ]; 
     217        $ext = strtolower($ext); 
     218        // .tarチェック 
     219        if ($ext == 'tar') { 
     220            $errFlag = false; 
     221        } 
     222        $ext = $array_ext[ count ( $array_ext ) - 2 ].".".$ext; 
     223        $ext = strtolower($ext); 
     224        // .tar.gzチェック 
     225        if ($ext== 'tar.gz') { 
     226            $errFlag = false; 
     227        } 
     228 
     229        if($errFlag) { 
     230            $arrErr['template_file'] = "※ アップロードするテンプレートファイルで許可されている形式は、tar/tar.gzです。<br />"; 
     231        } 
     232 
     233        return $arrErr; 
     234    } 
     235    /** 
     236     * DBおよびTPL_PKG_PATHにテンプレートパッケージを追加する. 
     237     * 
     238     * @param object $objForm SC_FormParamのインスタンス 
     239     * @param object $objUpFile SC_UploadFileのインスタンス 
     240     * @return void 
     241     */ 
     242    function lfAddTemplates($objForm, $objUpFile, $device_type_id) { 
     243        $template_code = $objForm->getValue('template_code'); 
     244        $template_dir = SMARTY_TEMPLATES_REALDIR . $template_code; 
     245        $compile_dir  = DATA_REALDIR . "Smarty/templates_c/" . $template_code; 
     246        // フォルダ作成 
     247        if(!file_exists($template_dir)) { 
     248            mkdir($template_dir); 
     249        } 
     250        if(!file_exists($compile_dir)) { 
     251            mkdir($compile_dir); 
     252        } 
     253 
     254        // 一時フォルダから保存ディレクトリへ移動 
     255        $objUpFile->moveTempFile(); 
     256 
     257        // 解凍 
     258        SC_Helper_FileManager::unpackFile($template_dir . "/" . $_FILES['template_file']['name']); 
     259        // ユーザデータの下のファイルをコピーする 
     260        $from_dir = SMARTY_TEMPLATES_REALDIR . $template_code . "/_packages/"; 
     261        $to_dir = USER_REALDIR . "packages/" . $template_code . "/"; 
     262        SC_Utils::sfMakeDir($to_dir); 
    254263        SC_Utils::sfCopyDir($from_dir, $to_dir); 
    255          
    256         // DBにテンプレート情報を保存 
    257         $this->lfRegisterTemplates($objForm->getHashArray()); 
    258     } 
    259      
    260     /** 
    261     * dtb_templatesへ入力内容を登録する. 
    262     * 
    263     * @param array $arrForm POSTされたパラメータ 
    264     * @return void 
    265     */ 
    266     function lfRegisterTemplates($arrForm) { 
     264 
     265        // DBにテンプレート情報を保存 
     266        $this->lfRegisterTemplates($objForm->getHashArray(), $device_type_id); 
     267    } 
     268 
     269    /** 
     270    * dtb_templatesへ入力内容を登録する. 
     271    * 
     272    * @param array $arrForm POSTされたパラメータ 
     273    * @return void 
     274    */ 
     275    function lfRegisterTemplates($arrForm, $device_type_id) { 
    267276        $objQuery = new SC_Query(); 
    268277        $sqlval = $arrForm; 
     278        $sqlval['device_type_id'] = $device_type_id; 
    269279        $sqlval['create_date'] = "now()"; 
    270280        $sqlval['update_date'] = "now()"; 
    271281        $objQuery->insert('dtb_templates', $sqlval); 
    272     } 
    273  
    274     /** 
    275      * デザイン管理で作成されたファイルをupload/temp_template/以下にコピーする 
    276      * 
    277      * @param string $to 
    278      * @return void 
    279      */ 
    280     function lfCopyUserEdit($to) { 
    281         $arrDirs = array( 
    282             'css', 
    283             'include', 
    284             'templates' 
    285         ); 
    286      
    287         foreach ($arrDirs as $dir) { 
    288             $from = USER_REALDIR .  $dir; 
    289             SC_Utils::sfCopyDir($from, $to, '', true); 
    290         } 
    291     } 
    292     /** 
    293      * 現在選択しているテンプレートパッケージをupload/temp_template/以下にコピーする 
    294      * 
    295      * @param string $to 保存先パス 
    296      * @return void 
    297      */ 
    298     function lfCopyTplPackage($to) { 
    299         $nowTpl = $this->lfGetNowTemplate(); 
    300         if (!$nowTpl) return; 
    301      
    302         $from = TPL_PKG_PATH . $nowTpl . '/'; 
    303         SC_Utils::sfCopyDir($from, $to, ''); 
    304     } 
    305     /** 
    306      * 現在適用しているテンプレートパッケージ名を取得する. 
    307      * 
    308      * @param void 
    309      * @return string テンプレートパッケージ名 
    310      */ 
    311     function lfGetNowTemplate() { 
    312         $objQuery = new SC_Query(); 
    313         $arrRet = $objQuery->select('top_tpl', 'dtb_baseinfo'); 
    314         if (isset($arrRet[0]['top_tpl'])) { 
    315             return $arrRet[0]['top_tpl']; 
    316         } 
    317         return null; 
    318     }     
     282    } 
    319283} 
    320284?> 
  • branches/version-2_5-dev/data/mtb_constants_init.php

    r19950 r19966  
    407407/** モバイルサイトを利用するか(true:利用する、false:利用しない) (false は一部対応) */ 
    408408define('USE_MOBILE', true); 
    409 /** デフォルトテンプレート名 */ 
     409/** デフォルトテンプレート名(PC) */ 
    410410define('DEFAULT_TEMPLATE_NAME', "default"); 
     411/** デフォルトテンプレート名(モバイル) */ 
     412define('MOBILE_DEFAULT_TEMPLATE_NAME', "mobile"); 
     413/** デフォルトテンプレート名(スマートフォン) */ 
     414define('SMARTPHONE_DEFAULT_TEMPLATE_NAME', "sphone"); 
    411415/** テンプレート名 */ 
    412416define('TEMPLATE_NAME', "default"); 
  • branches/version-2_5-dev/html/install/sql/create_table_mysql.sql

    r19958 r19966  
    880880CREATE TABLE dtb_templates ( 
    881881    template_code varchar(50) NOT NULL, 
     882    device_type_id int NOT NULL, 
    882883    template_name text, 
    883884    create_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
  • branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql

    r19958 r19966  
    882882CREATE TABLE dtb_templates ( 
    883883    template_code text NOT NULL, 
     884    device_type_id int NOT NULL, 
    884885    template_name text, 
    885886    create_date timestamp NOT NULL DEFAULT now(), 
  • branches/version-2_5-dev/html/install/sql/insert_data.sql

    r19961 r19966  
    681681INSERT INTO dtb_site_control (control_id, control_title, control_text, control_flg, del_flg, memo, create_date, update_date) VALUES (1, 'トラックバック機能', 'トラックバック機能を使用するかどうかを決定します。', 2, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
    682682 
    683 INSERT INTO dtb_templates (template_code, template_name, create_date, update_date) VALUES ('default', 'デフォルト', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
     683INSERT INTO dtb_templates (template_code, device_type_id, template_name, create_date, update_date) VALUES ('default', 10, 'デフォルト', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
     684INSERT INTO dtb_templates (template_code, device_type_id, template_name, create_date, update_date) VALUES ('mobile', 1, 'モバイル', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
     685INSERT INTO dtb_templates (template_code, device_type_id, template_name, create_date, update_date) VALUES ('sphone', 2, 'スマートフォン', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
    684686 
    685687INSERT INTO mtb_allowed_tag (id, name, rank) VALUES (0, 'table', 0); 
     
    12261228INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('NOSTOCK_HIDDEN', 'false', 291, '在庫無し商品の非表示(true:非表示、false:表示)'); 
    12271229INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('USE_MOBILE', 'true', 292, 'モバイルサイトを利用するか(true:利用する、false:利用しない) (false は一部対応)'); 
    1228 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DEFAULT_TEMPLATE_NAME', '"default"', 300, 'デフォルトテンプレート名'); 
    1229 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TEMPLATE_NAME', '"default"', 301, 'テンプレート名'); 
    1230 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MOBILE_TEMPLATE_NAME', '"mobile"', 302, 'モバイルテンプレート名'); 
    1231 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('SMARTPHONE_TEMPLATE_NAME', '"sphone"', 303, 'スマートフォンテンプレート名'); 
    1232 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('SMARTY_TEMPLATES_REALDIR', ' DATA_REALDIR . "Smarty/templates/"', 304, 'SMARTYテンプレート'); 
    1233 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TEMPLATE_REALDIR', 'SMARTY_TEMPLATES_REALDIR . TEMPLATE_NAME . "/"', 305, 'SMARTYテンプレート(PC)'); 
    1234 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TEMPLATE_ADMIN_REALDIR', 'SMARTY_TEMPLATES_REALDIR . "admin/"', 306, 'SMARTYテンプレート(管理機能)'); 
    1235 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('COMPILE_DIR', 'DATA_REALDIR . "Smarty/templates_c/" . TEMPLATE_NAME . "/"', 307, 'SMARTYコンパイル'); 
    1236 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('COMPILE_ADMIN_REALDIR', 'DATA_REALDIR . "Smarty/templates_c/admin/"', 308, 'SMARTYコンパイル(管理機能)'); 
     1230INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DEFAULT_TEMPLATE_NAME', '"default"', 300, 'デフォルトテンプレート名(PC)'); 
     1231INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('SMARTPHONE_DEFAULT_TEMPLATE_NAME', '"mobile"', 301, 'デフォルトテンプレート名(モバイル)'); 
     1232INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MOBILE_DEFAULT_TEMPLATE_NAME', '"sphone"', 302, 'デフォルトテンプレート名(スマートフォン)'); 
     1233INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TEMPLATE_NAME', '"default"', 303, 'テンプレート名'); 
     1234INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MOBILE_TEMPLATE_NAME', '"mobile"', 304, 'モバイルテンプレート名'); 
     1235INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('SMARTPHONE_TEMPLATE_NAME', '"sphone"', 305, 'スマートフォンテンプレート名'); 
     1236INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('SMARTY_TEMPLATES_REALDIR', ' DATA_REALDIR . "Smarty/templates/"', 306, 'SMARTYテンプレート'); 
     1237INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TEMPLATE_REALDIR', 'SMARTY_TEMPLATES_REALDIR . TEMPLATE_NAME . "/"', 307, 'SMARTYテンプレート(PC)'); 
     1238INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('TEMPLATE_ADMIN_REALDIR', 'SMARTY_TEMPLATES_REALDIR . "admin/"', 308, 'SMARTYテンプレート(管理機能)'); 
     1239INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('COMPILE_DIR', 'DATA_REALDIR . "Smarty/templates_c/" . TEMPLATE_NAME . "/"', 309, 'SMARTYコンパイル'); 
     1240INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('COMPILE_ADMIN_REALDIR', 'DATA_REALDIR . "Smarty/templates_c/admin/"', 310, 'SMARTYコンパイル(管理機能)'); 
    12371241INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('BLOC_DIR', '"frontparts/bloc/"', 311, 'ブロックファイル保存先'); 
    12381242INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MOBILE_TEMPLATE_REALDIR', 'SMARTY_TEMPLATES_REALDIR . MOBILE_TEMPLATE_NAME . "/"', 312, 'SMARTYテンプレート(mobile)'); 
Note: See TracChangeset for help on using the changeset viewer.