Ticket #518: toNanasess.patch

File toNanasess.patch, 19.7 KB (added by miningbrownie, 11 years ago)

全ページ共通でブロック表示と言うのを実装してみた。

  • data/Smarty/templates/default/admin/design/index.tpl

     
    5050                  <input type="hidden" class="id" name="id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_id}-->" /> 
    5151                  <input type="hidden" class="target-id" name="target_id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.target_id}-->" /> 
    5252                  <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" /> 
     53                  <label>(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->  />全ページ)</label>  
    5354                </div> 
    5455                <!--{assign var="firstflg" value=true}--> 
    5556                <!--{/if}--> 
     
    7172                  <input type="hidden" class="id" name="id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_id}-->" /> 
    7273                  <input type="hidden" class="target-id" name="target_id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.target_id}-->" /> 
    7374                  <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" /> 
     75                     <label>(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->  />全ページ)</label>  
     76                
    7477                </div> 
    7578                <!--{assign var="firstflg" value=true}--> 
    7679                <!--{/if}--> 
     
    9093                  <input type="hidden" class="id" name="id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_id}-->" /> 
    9194                  <input type="hidden" class="target-id" name="target_id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.target_id}-->" /> 
    9295                  <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" /> 
     96                     <label>(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->  />全ページ)</label>  
     97                
    9398                </div> 
    9499                <!--{assign var="firstflg" value=true}--> 
    95100                <!--{/if}--> 
     
    109114                  <input type="hidden" class="id" name="id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_id}-->" /> 
    110115                  <input type="hidden" class="target-id" name="target_id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.target_id}-->" /> 
    111116                  <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" /> 
     117                     <label>(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->  />全ページ)</label>  
     118                
    112119                </div> 
    113120                <!--{assign var="firstflg" value=true}--> 
    114121                <!--{/if}--> 
     
    135142                  <input type="hidden" class="id" name="id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_id}-->" /> 
    136143                  <input type="hidden" class="target-id" name="target_id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.target_id}-->" /> 
    137144                  <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" /> 
     145                     <label>(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->  />全ページ)</label>  
     146                
    138147                </div> 
    139148                <!--{assign var="firstflg" value=true}--> 
    140149                <!--{/if}--> 
     
    156165                  <input type="hidden" class="id" name="id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_id}-->" /> 
    157166                  <input type="hidden" class="target-id" name="target_id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.target_id}-->" /> 
    158167                  <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" /> 
     168                     <label>(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->  />全ページ)</label>  
     169                
    159170                </div> 
    160171                <!--{assign var="firstflg" value=true}--> 
    161172                <!--{/if}--> 
     
    183194            <input type="hidden" class="id" name="id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_id}-->" /> 
    184195            <input type="hidden" class="target-id" name="target_id_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.target_id}-->" /> 
    185196            <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" /> 
     197               <label>(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->  />全ページ)</label>  
     198                
    186199          </div> 
    187200          <!--{assign var="firstflg" value=true}--> 
    188201          <!--{/if}--> 
  • data/class/pages/admin/design/LC_Page_Admin_Design.php

     
    7878        $this->arrEditPage = $objLayout->lfgetPageData(); 
    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//        var_dump($arrBlocPos); 
     92//        echo "\n\n<br/>#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>\n\n"; 
     93                 
    8994        // データの存在チェックを行う 
    9095        $arrPageData = $objLayout->lfgetPageData("page_id = ?", array($page_id)); 
    9196        if (count($arrPageData) <= 0) { 
     
    142147                $arrUpdBlocData[$upd_cnt]['id']         = $_POST['id_'.$upd_cnt];                           // ブロックID 
    143148                $arrUpdBlocData[$upd_cnt]['target_id']  = $arrTargetFlip[$_POST['target_id_'.$upd_cnt]];    // ターゲットID 
    144149                $arrUpdBlocData[$upd_cnt]['top']        = $_POST['top_'.$upd_cnt];                          // TOP座標 
     150                $arrUpdBlocData[$upd_cnt]['anywhere']        = $_POST['anywhere_'.$upd_cnt];                     //全ページ適用か 
    145151                $arrUpdBlocData[$upd_cnt]['update_url'] = $_SERVER['HTTP_REFERER'];                         // 更新URL 
     152                 
    146153            } 
    147154 
    148155            // データの更新を行う 
     
    177184                $ins_sql .= "   ,? ";           // ブロックID 
    178185                $ins_sql .= "   ,? ";           // ブロックの並び順序 
    179186                $ins_sql .= "   ,(SELECT filename FROM dtb_bloc WHERE bloc_id = ?) ";           // ファイル名称 
     187                $ins_sql .= "   ,? ";           // 全ページフラグ 
    180188                $ins_sql .= "   )  "; 
    181  
     189                 
    182190                // insertデータ生成 
    183191                $arrInsData = array($page_id, 
    184192                                    $arrUpdBlocData[$key]['target_id'], 
    185193                                    $arrUpdBlocData[$key]['id'], 
    186194                                    $arrUpdBlocData[$key]['bloc_row'], 
    187                                     $arrUpdBlocData[$key]['id'] 
     195                                    $arrUpdBlocData[$key]['id'], 
     196                                    $arrUpdBlocData[$key]['anywhere'] 
    188197                                    ); 
     198                $count = $objDBConn->getOne("SELECT COUNT(*) FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ?",array($arrUpdBlocData[$key]['id'])); 
     199                                     
     200               if($arrUpdBlocData[$key]['anywhere'] == 1){ 
     201                   $count = $objDBConn->getOne("SELECT COUNT(*) FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ?",array($arrUpdBlocData[$key]['id'])); 
     202                   $objDBConn->getLastQuery(); 
     203                   if($count != 0){ 
     204                       continue; 
     205                   }else{ 
     206                   } 
     207               }else{ 
     208                   if($count > 0){ 
     209                       $objDBConn->query("DELETE FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ?",array($arrUpdBlocData[$key]['id'])); 
     210                   } 
     211               } 
    189212                // SQL実行 
    190213                $arrRet = $objDBConn->query($ins_sql,$arrInsData); 
    191214            } 
     
    227250            if ($val['page_id'] == $page_id) { 
    228251                $tpl_arrBloc = $this->lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt); 
    229252                $cnt++; 
     253            }else{ 
    230254            } 
    231255        } 
    232  
     256         
     257                 
    233258        // 未使用のブロックデータを追加 
    234259        foreach($arrBloc as $key => $val){ 
    235260            if (!$this->lfChkBloc($val, $tpl_arrBloc)) { 
    236                 $val['target_id'] = 5;  // 未使用に追加する 
     261                $val['target_id'] = 7;  // 未使用に追加する 
    237262                $tpl_arrBloc = $this->lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt); 
    238263                $cnt++; 
     264            }else{ 
    239265            } 
    240266        } 
    241267 
     
    373399        $tpl_arrBloc[$cnt]['bloc_id'] = $val['bloc_id']; 
    374400        $tpl_arrBloc[$cnt]['bloc_row'] = 
    375401            isset($val['bloc_row']) ? $val['bloc_row'] : ""; 
    376  
     402        $tpl_arrBloc[$cnt]['anywhere'] = $val['anywhere']; 
     403        if($val['anywhere'] == 1){ 
     404            $tpl_arrBloc[$cnt]['anywhere_selected'] = 'checked="checked"'; 
     405        } 
    377406        foreach($arrBloc as $bloc_key => $bloc_val){ 
    378407            if ($bloc_val['bloc_id'] == $val['bloc_id']) { 
    379408                $bloc_name = $bloc_val['bloc_name']; 
     
    381410            } 
    382411        } 
    383412        $tpl_arrBloc[$cnt]['name'] = $bloc_name; 
    384  
     413                 
    385414        return $tpl_arrBloc; 
    386415    } 
    387416 
     
    399428                return true; 
    400429            } 
    401430        } 
    402  
     431         
    403432        // 配列に存在しなければFlaseを返す 
    404433        return false; 
    405434    } 
     
    436465        $ret = "";                      // データ更新結果格納用 
    437466        $arrUpdData = array();          // 更新データ生成用 
    438467        $filename = $arrPageData[0]['filename']; 
    439  
     468         
    440469        $arrPreData = $objLayout->lfgetPageData(" page_id = ? " , array("0")); 
    441470 
    442471        // XXX tplファイルの削除 
     
    479508        $sql .= "     ,url = ?"; 
    480509        $sql .= "     ,tpl_dir = ?"; 
    481510        $sql .= "     ,filename = ?"; 
     511        $sql .= "     ,anywhere = ?"; 
    482512        $sql .= " where page_id = 0"; 
    483513 
    484514        $arrUpdData = array($ret[0]['page_id'] 
     
    487517                            ,USER_DIR . "templates/" . TEMPLATE_NAME . "/" 
    488518                            ,USER_DIR . "templates/" . TEMPLATE_NAME . "/" 
    489519                            ,$filename 
     520                            
    490521                            ); 
    491522 
    492523        $objDBConn->query($sql,$arrUpdData); 
  • data/class/helper/SC_Helper_PageLayout.php

     
    166166        $objQuery = new SC_Query;       // DB操作オブジェクト 
    167167 
    168168        // 取得するカラム 
    169         $col = "target_id, bloc_name, tpl_path, php_path"; 
     169        $col = "target_id, bloc_name, tpl_path, php_path,anywhere"; 
    170170         
    171171        // 取得するテーブル 
    172172        $table = "dtb_blocposition AS pos INNER JOIN dtb_bloc AS bloc ON bloc.bloc_id = pos.bloc_id"; 
    173173         
    174174        // where文生成 
    175         $where = "page_id = ?"; 
     175        $where = "anywhere = 1 OR page_id = ?"; 
    176176        $where_vals[] = $page_id; 
    177177 
    178178        // 並び変え 
     
    197197        if(is_array($arrNavi)) { 
    198198            foreach($arrNavi as $key => $val){ 
    199199                // 指定された箇所と同じデータだけを取得する 
    200                 if ($target_id == $val['target_id']){ 
     200                if ($target_id == $val['target_id'] ){ 
    201201                    if ($val['php_path'] != '') { 
    202202                        $arrNavi[$key]['php_path'] = HTML_PATH . $val['php_path']; 
    203203                    }else{ 
  • html/install/sql/insert_data.sql

     
    2323INSERT INTO dtb_pagelayout (page_id,page_name,url, create_date, update_date) VALUES (0, 'プレビューデータ',' ',now(),now()); 
    2424update dtb_pagelayout set page_id = 0 where page_id = 5; 
    2525 
    26 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (1,1,1,2,'category'); 
    27 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (1,1,2,3,'guide'); 
    28 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (1,1,3,1,'cart'); 
    29 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (1,3,4,2,'search_products'); 
    30 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (1,4,5,1,'news'); 
    31 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (1,3,6,1,'login'); 
    32 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (1,4,7,2,'best5'); 
    33 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (2,1,1,2,'category'); 
    34 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (2,1,2,3,'guide'); 
    35 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (2,1,3,1,'cart'); 
    36 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (2,7,4,0,'search_products'); 
    37 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (2,7,5,0,'news'); 
    38 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (2,7,6,0,'login'); 
    39 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (2,7,7,0,'best5'); 
    40 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (3,1,1,2,'category'); 
    41 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (3,1,2,3,'guide'); 
    42 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (3,1,3,1,'cart'); 
    43 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (3,7,4,0,'search_products'); 
    44 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (3,7,5,0,'news'); 
    45 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (3,7,6,0,'login'); 
    46 INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename) VALUES (3,7,7,0,'best5'); 
     26INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (1,1,1,2,'category',0); 
     27INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (1,1,2,3,'guide',0); 
     28INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (1,1,3,1,'cart',0); 
     29INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (1,3,4,2,'search_products',0); 
     30INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (1,4,5,1,'news',0); 
     31INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (1,3,6,1,'login',0); 
     32INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (1,4,7,2,'best5',0); 
     33INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (2,1,1,2,'category',0); 
     34INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (2,1,2,3,'guide',0); 
     35INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (2,1,3,1,'cart',0); 
     36INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (2,7,4,0,'search_products',0); 
     37INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (2,7,5,0,'news',0); 
     38INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (2,7,6,0,'login',0); 
     39INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (2,7,7,0,'best5',0); 
     40INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (3,1,1,2,'category',0); 
     41INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (3,1,2,3,'guide',0); 
     42INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (3,1,3,1,'cart',0); 
     43INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (3,7,4,0,'search_products',0); 
     44INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (3,7,5,0,'news',0); 
     45INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (3,7,6,0,'login',0); 
     46INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename,anywhere) VALUES (3,7,7,0,'best5',0); 
    4747 
    4848INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (1,'product_id','商品ID',1,now(),now()); 
    4949INSERT INTO dtb_csv(csv_id,col,disp_name,rank,create_date,update_date) VALUES (1,'product_class_id','規格ID',2,now(),now()); 
  • html/install/sql/create_table_mysql.sql

     
    900900    target_id int, 
    901901    bloc_id int, 
    902902    bloc_row int, 
    903     filename text 
     903    filename text, 
     904    anywhere int 
    904905) TYPE=InnoDB ; 
    905906 
    906907CREATE TABLE dtb_csv ( 
  • html/install/sql/create_table_pgsql.sql

     
    928928    target_id int4, 
    929929    bloc_id int4, 
    930930    bloc_row int4, 
    931     filename text 
     931    filename text, 
     932    anywhere int4 
    932933); 
    933934 
    934935CREATE TABLE dtb_csv (