Changeset 17872


Ignore:
Timestamp:
2009/03/05 19:10:24 (12 years ago)
Author:
theuri
Message:

D&Dされた時の処理を追加しました。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/class/pages/admin/products/LC_Page_Admin_Products_Category.php

    r17799 r17872  
    173173            } 
    174174            $objQuery->commit(); 
     175            break; 
     176        case 'moveByDnD': 
     177            // DnDしたカテゴリと移動先のセットを分解する 
     178            $keys = explode("-", $_POST['keySet']); 
     179            if ($keys[0] && $keys[1]) { 
     180                $objQuery = new SC_Query(); 
     181                $objQuery->begin(); 
     182         
     183                // 移動したデータのrank、level、parent_category_idを取得 
     184                $rank   = $objQuery->get("dtb_category", "rank", "category_id = ?", array($keys[0])); 
     185                $level  = $objQuery->get("dtb_category", "level", "category_id = ?", array($keys[0])); 
     186                $parent = $objQuery->get("dtb_category", "parent_category_id", "category_id = ?", array($keys[0])); 
     187 
     188                // 同一level内のrank配列を作成 
     189                $objQuery->setoption("ORDER BY rank DESC"); 
     190                if ($level == 1) { 
     191                    // 第1階層の時 
     192                    $arrRet = $objQuery->select("rank", "dtb_category", "level = ?", array($level)); 
     193                } else { 
     194                    // 第2階層以下の時 
     195                    $arrRet = $objQuery->select("rank", "dtb_category", "level = ? AND parent_category_id = ?", array($level, $parent)); 
     196                } 
     197                for ($i = 0; $i < sizeof($arrRet); $i++) { 
     198                    $rankAry[$i + 1] = $arrRet[$i]['rank']; 
     199                } 
     200 
     201                // 移動したデータのグループ内データ数 
     202                $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $keys[0]); 
     203                if ($rankAry[$keys[1]] > $rank) { 
     204                    // データが今の位置より上がった時 
     205                    $up_count = $rankAry[$keys[1]] - $rank; 
     206                    $decAry   = $objQuery->select("category_id", "dtb_category", "level = ? AND rank > ? AND rank <= ?", array($level, $rank, $rankAry[$keys[1]])); 
     207                    foreach($decAry as $value){ 
     208                        // 上のグループから減算 
     209                        $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $value["category_id"], $my_count); 
     210                    } 
     211                    // 自分のグループに加算 
     212                    $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $keys[0], $up_count); 
     213                } else if($rankAry[$keys[1]] < $rank) { 
     214                    // データが今の位置より下がった時 
     215                    $down_count = 0; 
     216                    $incAry     = $objQuery->select("category_id", "dtb_category", "level = ? AND rank < ? AND rank >= ?", array($level, $rank, $rankAry[$keys[1]])); 
     217                    foreach ($incAry as $value) { 
     218                        // 下のグループに加算 
     219                        $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $value["category_id"], $my_count); 
     220                        // 合計減算値 
     221                        $down_count += $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $value["category_id"]); 
     222                    } 
     223                    // 自分のグループから減算 
     224                    $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $keys[0], $down_count); 
     225                } 
     226                $objQuery->commit(); 
     227            } 
    175228            break; 
    176229        case 'tree': 
Note: See TracChangeset for help on using the changeset viewer.