Ignore:
Timestamp:
2009/07/15 14:39:49 (15 years ago)
Author:
miningbrownie
Message:

ブロックをすべてのページにまたがって表示させるようにしました。(nanasessさまからのご提案です。) チケット:#518

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design.php

    r18189 r18190  
    7979 
    8080        // ブロック配置用データを取得 
    81         $sel   = ", pos.target_id, pos.bloc_id, pos.bloc_row "; 
     81        $sel   = ", pos.target_id, pos.bloc_id, pos.bloc_row ,pos.anywhere"; 
    8282        $from  = ", dtb_blocposition AS pos"; 
    8383        $where = " where "; 
    84         $where .= " lay.page_id = ? AND "; 
    85         $where .= "lay.page_id = pos.page_id AND exists (select bloc_id from dtb_bloc as blc where pos.bloc_id = blc.bloc_id) ORDER BY lay.page_id,pos.target_id, pos.bloc_row, pos.bloc_id "; 
     84        $where .= "( pos.anywhere = 1 OR (lay.page_id = ? AND "; 
     85        $where .= "lay.page_id = pos.page_id AND exists (select bloc_id from dtb_bloc as blc where pos.bloc_id = blc.bloc_id) )) ORDER BY lay.page_id,pos.target_id, pos.bloc_row, pos.bloc_id "; 
     86//        $where .= "((lay.page_id = ? AND "; 
     87//        $where .= "lay.page_id = pos.page_id AND exists (select bloc_id from dtb_bloc as blc where pos.bloc_id = blc.bloc_id) )) ORDER BY lay.page_id,pos.target_id, pos.bloc_row, pos.bloc_id "; 
     88         
    8689        $arrData = array($page_id); 
    8790        $arrBlocPos = $this->lfgetLayoutData($sel, $from, $where, $arrData ); 
    88  
     91                 
    8992        // データの存在チェックを行う 
    9093        $arrPageData = $objLayout->lfgetPageData("page_id = ?", array($page_id)); 
     
    143146                $arrUpdBlocData[$upd_cnt]['target_id']  = $arrTargetFlip[$_POST['target_id_'.$upd_cnt]];    // ターゲットID 
    144147                $arrUpdBlocData[$upd_cnt]['top']        = $_POST['top_'.$upd_cnt];                          // TOP座標 
     148                $arrUpdBlocData[$upd_cnt]['anywhere']        = $_POST['anywhere_'.$upd_cnt];                     //全ページ適用か 
    145149                $arrUpdBlocData[$upd_cnt]['update_url'] = $_SERVER['HTTP_REFERER'];                         // 更新URL 
     150                 
    146151            } 
    147152 
     
    178183                $ins_sql .= "   ,? ";           // ブロックの並び順序 
    179184                $ins_sql .= "   ,(SELECT filename FROM dtb_bloc WHERE bloc_id = ?) ";           // ファイル名称 
     185                $ins_sql .= "   ,? ";           // 全ページフラグ 
    180186                $ins_sql .= "   )  "; 
    181  
     187                 
    182188                // insertデータ生成 
    183189                $arrInsData = array($page_id, 
     
    185191                                    $arrUpdBlocData[$key]['id'], 
    186192                                    $arrUpdBlocData[$key]['bloc_row'], 
    187                                     $arrUpdBlocData[$key]['id'] 
     193                                    $arrUpdBlocData[$key]['id'], 
     194                                    $arrUpdBlocData[$key]['anywhere'] 
    188195                                    ); 
     196                $count = $objDBConn->getOne("SELECT COUNT(*) FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ?",array($arrUpdBlocData[$key]['id'])); 
     197                                     
     198               if($arrUpdBlocData[$key]['anywhere'] == 1){ 
     199                   $count = $objDBConn->getOne("SELECT COUNT(*) FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ?",array($arrUpdBlocData[$key]['id'])); 
     200                   $objDBConn->getLastQuery(); 
     201                   if($count != 0){ 
     202                       continue; 
     203                   }else{ 
     204                   } 
     205               }else{ 
     206                   if($count > 0){ 
     207                       $objDBConn->query("DELETE FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ?",array($arrUpdBlocData[$key]['id'])); 
     208                   } 
     209               } 
    189210                // SQL実行 
    190211                $arrRet = $objDBConn->query($ins_sql,$arrInsData); 
     
    228249                $tpl_arrBloc = $this->lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt); 
    229250                $cnt++; 
    230             } 
    231         } 
    232  
     251            }else{ 
     252            } 
     253        } 
     254         
     255                 
    233256        // 未使用のブロックデータを追加 
    234257        foreach($arrBloc as $key => $val){ 
    235258            if (!$this->lfChkBloc($val, $tpl_arrBloc)) { 
    236                 $val['target_id'] = 5;  // 未使用に追加する 
     259                $val['target_id'] = 7;  // 未使用に追加する 
    237260                $tpl_arrBloc = $this->lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt); 
    238261                $cnt++; 
     262            }else{ 
    239263            } 
    240264        } 
     
    374398        $tpl_arrBloc[$cnt]['bloc_row'] = 
    375399            isset($val['bloc_row']) ? $val['bloc_row'] : ""; 
    376  
     400        $tpl_arrBloc[$cnt]['anywhere'] = $val['anywhere']; 
     401        if($val['anywhere'] == 1){ 
     402            $tpl_arrBloc[$cnt]['anywhere_selected'] = 'checked="checked"'; 
     403        } 
    377404        foreach($arrBloc as $bloc_key => $bloc_val){ 
    378405            if ($bloc_val['bloc_id'] == $val['bloc_id']) { 
     
    382409        } 
    383410        $tpl_arrBloc[$cnt]['name'] = $bloc_name; 
    384  
     411                 
    385412        return $tpl_arrBloc; 
    386413    } 
     
    400427            } 
    401428        } 
    402  
     429         
    403430        // 配列に存在しなければFlaseを返す 
    404431        return false; 
     
    437464        $arrUpdData = array();          // 更新データ生成用 
    438465        $filename = $arrPageData[0]['filename']; 
    439  
     466         
    440467        $arrPreData = $objLayout->lfgetPageData(" page_id = ? " , array("0")); 
    441468 
     
    480507        $sql .= "     ,tpl_dir = ?"; 
    481508        $sql .= "     ,filename = ?"; 
     509        $sql .= "     ,anywhere = ?"; 
    482510        $sql .= " where page_id = 0"; 
    483511 
     
    488516                            ,USER_DIR . "templates/" . TEMPLATE_NAME . "/" 
    489517                            ,$filename 
     518                            
    490519                            ); 
    491520 
Note: See TracChangeset for help on using the changeset viewer.