Changeset 17416
- Timestamp:
- 2008/07/10 14:29:55 (16 years ago)
- Location:
- branches/comu-ver2/data
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/comu-ver2/data/Smarty/templates/default/admin/design/main_edit.tpl
r17414 r17416 71 71 <!--{/if}--> 72 72 URL:<!--{if $arrPageData.edit_flg == 2}--> 73 <!--{$smarty.const.SITE_URL }--><!--{$arrPageData.url|escape}-->74 <input type="hidden" name="url" value="<!--{$arrPageData.filename|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->"/>73 <!--{$smarty.const.SITE_URL|escape}--><!--{$arrPageData.url|escape}--> 74 <input type="hidden" name="url" value="<!--{$arrPageData.filename|escape}-->" /> 75 75 <!--{else}--> 76 <!--{$user_URL }--><input type="text" name="url" value="<!--{$arrPageData.directory|escape}--><!--{$arrPageData.filename|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr.url != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}--> ime-mode: disabled;" size="40" class="box40" />.php<span class="attention"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span>76 <!--{$user_URL|escape}--><input type="text" name="url" value="<!--{$arrPageData.directory|escape}--><!--{$arrPageData.filename|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr.url != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}--> ime-mode: disabled;" size="40" class="box40" />.php<span class="attention"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span> 77 77 <!--{/if}--><br /> 78 78 … … 96 96 <table class="list center"> 97 97 <!--{foreach key=key item=item from=$arrPageList}--> 98 <tr style=" background-color:<!--{if $item.page_id == $page_id}--><!--{$smarty.const.SELECT_RGB}--><!--{else}-->#ffffff<!--{/if}-->;">98 <tr style="<!--{if $item.page_id == $page_id}-->background-color: <!--{$smarty.const.SELECT_RGB}-->;<!--{/if}-->"> 99 99 <td> 100 100 <a href="<!--{$smarty.server.PHP_SELF|escape}-->?page_id=<!--{$item.page_id}-->" ><!--{$item.page_name}--></a> -
branches/comu-ver2/data/class/helper/SC_Helper_PageLayout.php
r17116 r17416 46 46 function sfGetPageLayout(&$objPage, $preview = false, $url = ""){ 47 47 $debug_message = ""; 48 48 $arrPageLayout = array(); 49 49 50 50 // 現在のURLの取得 … … 53 53 $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; 54 54 } 55 $url2 = preg_replace('|^' . preg_quote(SITE_URL) . '|', '', $url); 55 56 // URLを元にページデザインを取得 56 $arrPageData = $this->lfgetPageData(" url = ? " , array($url));57 $arrPageData = $this->lfgetPageData(" url IN (?, ?) " , array($url2, $url)); // $url は従来互換 57 58 }else{ 58 59 $arrPageData = $this->lfgetPageData(" page_id = ? " , array("0")); … … 60 61 . TEMPLATE_NAME . "/" . $arrPageData[0]['filename'] . ".tpl"; 61 62 } 62 63 63 64 foreach($arrPageData[0] as $key => $val) { 64 65 $debug_message.= "arrPageData[$key]:" . $val . "\n"; 65 66 } 66 67 … … 98 99 $arrNavi = $this->lfGetNaviData($url, $preview); 99 100 100 $arrPageLayout['LeftNavi'] = $this->lfGetNavi($arrNavi,1); 101 $arrPageLayout['MainHead'] = $this->lfGetNavi($arrNavi,2); 102 $arrPageLayout['RightNavi'] = $this->lfGetNavi($arrNavi,3); 103 $arrPageLayout['MainFoot'] = $this->lfGetNavi($arrNavi,4); 101 $arrPageLayout['LeftNavi'] = $this->lfGetNavi($arrNavi,1); // LEFT NAVI 102 $arrPageLayout['MainHead'] = $this->lfGetNavi($arrNavi,2); // メイン上部 103 $arrPageLayout['RightNavi'] = $this->lfGetNavi($arrNavi,3); // RIGHT NAVI 104 $arrPageLayout['MainFoot'] = $this->lfGetNavi($arrNavi,4); // メイン下部 104 105 105 106 GC_Utils::gfDebugLog($arrPageLayout); … … 121 122 */ 122 123 function lfgetPageData($where = '', $arrVal = ''){ 123 $objDBConn = new SC_DbConn; 124 $sql = ""; 125 $arrRet = array(); 124 $objDBConn = new SC_DbConn; // DB操作オブジェクト 125 $sql = ""; // データ取得SQL生成用 126 $arrRet = array(); // データ取得用 126 127 127 128 // SQL生成 128 129 $sql .= " SELECT"; 129 $sql .= " page_id"; 130 $sql .= " ,page_name"; 131 $sql .= " ,url"; 132 $sql .= " ,php_dir"; 133 $sql .= " ,tpl_dir"; 134 $sql .= " ,filename"; 135 $sql .= " ,header_chk "; 136 $sql .= " ,footer_chk "; 137 $sql .= " ,edit_flg "; 138 $sql .= " ,author"; 139 $sql .= " ,description"; 140 $sql .= " ,keyword"; 141 $sql .= " ,update_url"; 142 $sql .= " ,create_date"; 143 $sql .= " ,update_date"; 130 $sql .= " page_id"; // ページID 131 $sql .= " ,page_name"; // 名称 132 $sql .= " ,url"; // URL 133 $sql .= " ,php_dir"; // php保存先ディレクトリ 134 $sql .= " ,tpl_dir"; // tpl保存先ディレクトリ 135 $sql .= " ,filename"; // ファイル名称 136 $sql .= " ,header_chk "; // ヘッダー使用FLG 137 $sql .= " ,footer_chk "; // フッター使用FLG 138 $sql .= " ,edit_flg "; // 編集可能FLG 139 $sql .= " ,author"; // authorタグ 140 $sql .= " ,description"; // descriptionタグ 141 $sql .= " ,keyword"; // keywordタグ 142 $sql .= " ,update_url"; // 更新URL 143 $sql .= " ,create_date"; // データ作成日 144 $sql .= " ,update_date"; // データ更新日 144 145 $sql .= " FROM "; 145 146 $sql .= " dtb_pagelayout"; … … 168 169 */ 169 170 function lfGetNaviData($url, $preview=false){ 170 $objDBConn = new SC_DbConn; 171 $sql = ""; 172 $arrRet = array(); 171 $objDBConn = new SC_DbConn; // DB操作オブジェクト 172 $sql = ""; // データ取得SQL生成用 173 $arrRet = array(); // データ取得用 173 174 $arrData = array(); 174 175 … … 215 216 $arrNavi[$key]['php_path'] = HTML_PATH . $val['php_path']; 216 217 }else{ 217 218 219 220 221 $arrNavi[$key]['tpl_path'] = TEMPLATE_DIR . $val['tpl_path'];222 218 $user_block_path = USER_TEMPLATE_PATH . TEMPLATE_NAME . "/" . $val['tpl_path']; 219 if(is_file($user_block_path)) { 220 $arrNavi[$key]['tpl_path'] = $user_block_path; 221 } else { 222 $arrNavi[$key]['tpl_path'] = TEMPLATE_DIR . $val['tpl_path']; 223 } 223 224 } 224 225 … … 260 261 function lfDelPageData($page_id){ 261 262 // DBへデータを更新する 262 $objDBConn = new SC_DbConn; 263 $sql = ""; 264 $ret = ""; 265 $arrDelData = array(); 263 $objDBConn = new SC_DbConn; // DB操作オブジェクト 264 $sql = ""; // データ更新SQL生成用 265 $ret = ""; // データ更新結果格納用 266 $arrDelData = array(); // 更新データ生成用 266 267 267 268 // page_id が空でない場合にはdeleteを実行 -
branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
r16741 r17416 111 111 112 112 // ディレクトリを画面表示用に編集 113 $arrPageData[0]['directory'] = str_replace( USER_DIR,'', $arrPageData[0]['php_dir']);113 $arrPageData[0]['directory'] = str_replace(USER_DIR, '', $arrPageData[0]['php_dir']); 114 114 115 115 $this->arrPageData = $arrPageData[0]; … … 133 133 $arrPreData = $this->objLayout->lfgetPageData("page_id = ?" , array($page_id)); 134 134 135 // tplファイルの削除 135 // tplファイルの削除 (XXX: 処理の意図が不明。存在していると都合が悪いファイル?) 136 136 $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl'; 137 137 if (file_exists($del_tpl)){ … … 192 192 $this->objLayout->lfDelFile($arrPageData[0]); 193 193 // PHPファイル作成 194 $cre_php = USER_PATH . $_POST['url'] . ".php"; 195 $this->lfCreatePHPFile($cre_php); 194 $this->lfCreatePHPFile($_POST['url']); 196 195 } 197 196 198 197 // TPLファイル作成 199 198 $cre_tpl = USER_TEMPLATE_PATH . "/" . TEMPLATE_NAME . "/" . basename($_POST['url']) . '.tpl'; 200 201 199 $this->lfCreateFile($cre_tpl); 202 200 203 // 編集可能ページの場合にのみ処理を行う204 if ($ arrPageData[0]['edit_flg'] != 2) {205 // 新規作成した場合のために改にページIDを取得する206 $arrPageData = $this->objLayout->lfgetPageData(" url = ? " , array(USER_URL.$_POST['url'].".php"));201 // 新規作成の場合、 202 if ($page_id == '') { 203 // ページIDを取得する 204 $arrPageData = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_DIR . $_POST['url'] . '.php')); 207 205 $page_id = $arrPageData[0]['page_id']; 208 206 } … … 210 208 array("page_id" => $page_id, 211 209 "msg" => "on"))); 212 } else{210 } else { 213 211 // エラーがあれば入力時のデータを表示する 214 212 $this->arrPageData = $_POST; 215 213 $this->arrPageData['header_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['header_chk']), true); 216 214 $this->arrPageData['footer_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['footer_chk']), true); 217 $this->arrPageData['directory'] = $_POST['url'];218 $this->arrPageData['filename'] = "";215 $this->arrPageData['directory'] = ''; 216 $this->arrPageData['filename'] = $_POST['url']; 219 217 } 220 218 } 221 219 222 220 // データ削除処理 ベースデータでなければファイルを削除 223 if ($_POST['mode'] == 'delete' and 221 if ($_POST['mode'] == 'delete' and !$this->objLayout->lfCheckBaseData($page_id)) { 224 222 $this->objLayout->lfDelPageData($_POST['page_id']); 225 223 $this->sendRedirect($this->getLocation("./main_edit.php")); … … 278 276 $sql .= " ) VALUES ( ?,?,?,?,?,?,?,?,now(),now() )"; 279 277 $sql .= " "; 280 } else{278 } else { 281 279 // データが存在してる場合にはアップデートを行う 282 280 // SQL生成 … … 315 313 if ($this->objLayout->lfCheckBaseData($arrData['page_id'])) { 316 314 $arrPageData = $this->objLayout->lfgetPageData( ' page_id = ? ' , array($arrData['page_id'])); 315 317 316 $name = $arrPageData[0]['page_name'] ; 318 317 $url = $arrPageData[0]['url']; 318 $php_dir = $arrPageData[0]['php_dir']; 319 319 $filename = $arrPageData[0]['filename']; 320 } else{320 } else { 321 321 $name = $arrData['page_name'] ; 322 $url = USER_URL.$arrData['url'].".php"; 323 $filename = basename($arrData['url']); 322 $url = USER_DIR . $arrData['url'] . '.php'; 323 $php_dir = dirname($url); 324 if ($php_dir == '.') { 325 $php_dir = ''; 326 } else { 327 $php_dir .= '/'; 328 } 329 $filename = basename($arrData['url']); // 拡張子を付加しない 324 330 } 325 331 326 332 // 更新データ配列の作成 327 333 $arrUpdData = array( 328 $name// 名称329 ,$url// URL330 ,$php_dir// PHPディレクトリ331 ,$tpl_dir// TPLディレクトリ332 ,$filename// ファイル名333 ,SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk'])// ヘッダー使用334 ,SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk'])// フッター使用335 ,$_SERVER['HTTP_REFERER']// 更新URL336 334 $name // 名称 335 ,$url // URL 336 ,$php_dir // PHPディレクトリ 337 ,$tpl_dir // TPLディレクトリ 338 ,$filename // ファイル名 339 ,SC_Utils_Ex::sfChangeCheckBox($arrData['header_chk']) // ヘッダー使用 340 ,SC_Utils_Ex::sfChangeCheckBox($arrData['footer_chk']) // フッター使用 341 ,$_SERVER['HTTP_REFERER'] // 更新URL 342 ); 337 343 338 344 return $arrUpdData; … … 349 355 $objErr->doFunc(array("名称", "page_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 350 356 $objErr->doFunc(array("URL", "url", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 351 357 352 358 // URLチェック 353 if (substr(strrev(trim($array['url'])),0,1) == "/") { 359 $okUrl = true; 360 foreach (explode('/', $array['url']) as $url_part) { 361 if (!ereg( '^[a-zA-Z0-9:_~\.-]+$', $url_part)) { 362 $okUrl = false; 363 } 364 if ($url_part == '.' || $url_part == '..') { 365 $okUrl = false; 366 } 367 } 368 if (!$okUrl) { 354 369 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 355 370 } 356 357 $check_url = USER_URL . $array['url'] . ".php"; 358 if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9:_~=&\?\.\/-])+$", $check_url ) ) { 359 $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 360 } 361 371 362 372 // 同一のURLが存在している場合にはエラー 363 if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){ 364 // URLのチェック(プレビュー用のレコードは含まない) 365 $arrChk = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_URL . $array['url'].".php")); 366 367 if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) { 368 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。<br />'; 369 } 370 } 371 373 $sqlWhere = ''; 374 $params = array(); 375 376 $sqlWhere .= ' (url = ? OR url = ?)'; 377 $params[] = USER_DIR . $array['url'] . '.php'; 378 $params[] = USER_URL . $array['url'] . '.php'; // 従来形式 379 380 // プレビュー用のレコードは除外 381 $sqlWhere .= ' AND page_id <> 0'; 382 383 // 変更の場合、自身のレコードは除外 384 if (strlen($array['page_id']) != 0) { 385 $sqlWhere .= ' AND page_id <> ?'; 386 $params[] = $array['page_id']; 387 } 388 389 $arrChk = $this->objLayout->lfgetPageData($sqlWhere , $params); 390 391 if (count($arrChk) >= 1) { 392 $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。<br />'; 393 } 394 372 395 return $objErr->arrErr; 373 396 } … … 398 421 * @return void 399 422 */ 400 function lfCreatePHPFile($path){ 401 423 function lfCreatePHPFile($url){ 424 425 $path = USER_PATH . $url . ".php"; 426 402 427 // php保存先ディレクトリが存在していなければ作成する 403 428 if (!is_dir(dirname($path))) { … … 411 436 412 437 // require.phpの場所を書き換える 413 $php_data = str_replace("###require###", HTML_PATH . "require.php", $php_data);438 $php_data = str_replace("###require###", str_repeat('../', substr_count($url, '/')) . '../require.php', $php_data); 414 439 415 440 // phpファイルの作成
Note: See TracChangeset
for help on using the changeset viewer.