Index: /branches/comu-ver2/data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php
===================================================================
--- /branches/comu-ver2/data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php	(revision 17596)
+++ /branches/comu-ver2/data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php	(revision 17601)
@@ -57,5 +57,5 @@
      */
     function process() {
-        $conn = new SC_DBConn();
+        $objQuery = new SC_Query();
         $objView = new SC_AdminView();
         $objSess = new SC_Session();
@@ -93,4 +93,27 @@
             $this->tpl_pageno = "";
             break;
+            
+        case 'renumber':
+            $sql = <<< __EOS__
+                UPDATE dtb_product_categories tgt
+                SET
+                    rank =
+                        (
+                            SELECT COUNT(*)
+                            FROM dtb_product_categories t_in
+                            WHERE t_in.category_id = tgt.category_id
+                                AND (
+                                    t_in.rank < tgt.rank
+                                    OR (
+                                        t_in.rank = tgt.rank
+                                        AND t_in.product_id < tgt.product_id
+                                    )
+                                )
+                        ) + 1
+                WHERE tgt.category_id = ?
+__EOS__;
+            $objQuery->query($sql, array($_POST['parent_category_id']));
+            break;
+        
         default:
             break;
@@ -117,8 +140,7 @@
     function lfGetProduct($category_id) {
         $objQuery = new SC_Query();
-        $col = "T2.product_id, name, main_list_image, T2.rank, product_code";
-        $table = "vw_products_nonclass AS noncls "
-            . " LEFT JOIN dtb_product_categories AS T2 USING (product_id)";
-        $where = "del_flg = 0 AND T2.category_id = ?";
+        $col = "product_id, name, main_list_image, product_code_min, product_code_max, status";
+        $table = "vw_products_allclass AS allcls";
+        $where = "del_flg = 0 AND category_id = ?";
 
         // 行数の取得
@@ -130,12 +152,12 @@
         $startno = $objNavi->start_row;
         $this->tpl_start_row = $objNavi->start_row;
-        $this->tpl_strnavi = $objNavi->strnavi;		// Navi表示文字列
-        $this->tpl_pagemax = $objNavi->max_page;		// ページ最大数（「上へ下へ」表示判定用）
-        $this->tpl_disppage = $objNavi->now_page;	// 表示ページ番号（「上へ下へ」表示判定用）
+        $this->tpl_strnavi = $objNavi->strnavi;     // Navi表示文字列
+        $this->tpl_pagemax = $objNavi->max_page;    // ページ最大数（「上へ下へ」表示判定用）
+        $this->tpl_disppage = $objNavi->now_page;   // 表示ページ番号（「上へ下へ」表示判定用）
 
         // 取得範囲の指定(開始行番号、行数のセット)
-        if(DB_TYPE != "mysql") $objQuery->setlimitoffset(SEARCH_PMAX, $startno);
+        $objQuery->setlimitoffset(SEARCH_PMAX, $startno);
 
-        $objQuery->setorder("rank DESC");
+        $objQuery->setorder("product_rank DESC, product_id DESC");
 
         $arrRet = $objQuery->select($col, $table, $where, array($category_id));
Index: /branches/comu-ver2/data/Smarty/templates/default/admin/products/product_rank.tpl
===================================================================
--- /branches/comu-ver2/data/Smarty/templates/default/admin/products/product_rank.tpl	(revision 17596)
+++ /branches/comu-ver2/data/Smarty/templates/default/admin/products/product_rank.tpl	(revision 17601)
@@ -76,5 +76,9 @@
     <!--{$tpl_strnavi}-->
     <!--{* ▲ページナビ *}-->
-            
+    
+    <!--{if $smarty.const.ADMIN_MODE == '1'}-->
+        <p class="right"><button type="button" onclick="fnModeSubmit('renumber', '', '');">内部順位再割り当て</button></p>
+    <!--{/if}-->
+    
     <table class="list">
       <tr>
@@ -88,8 +92,10 @@
       <!--{section name=cnt loop=$arrProductsList}-->
         <tr>
-          <!--{assign var=db_rank value="`$arrProductsList[cnt].rank`"}-->
           <!--{assign var=rank value=`$rank+1`}-->
-          <td align="center"><!--{$rank}--></td>
-          <td><!--{$arrProductsList[cnt].product_code|escape|default:"-"}--></td>
+          <td align="center">
+            <!--{$rank}-->
+            <!--{if $arrProductsList[cnt].status == "2"}--><br />(非公開)<!--{/if}-->
+          </td>
+          <td><!--{from_to from=$arrProductsList[cnt].product_code_min to=$arrProductsList[cnt].product_code_max separator="～<br />"}--></td>
           <td align="center">
             <!--{* 商品画像 *}-->
Index: /branches/comu-ver2/html/install/sql/create_table_mysql.sql
===================================================================
--- /branches/comu-ver2/html/install/sql/create_table_mysql.sql	(revision 17522)
+++ /branches/comu-ver2/html/install/sql/create_table_mysql.sql	(revision 17601)
@@ -386,5 +386,5 @@
     product_id int4 NOT NULL,
     category_id int4 NOT NULL,
-    rank int4,
+    rank int4 NOT NULL,
     PRIMARY KEY(product_id, category_id)
 ) TYPE=InnoDB;
Index: /branches/comu-ver2/html/install/sql/create_table_pgsql.sql
===================================================================
--- /branches/comu-ver2/html/install/sql/create_table_pgsql.sql	(revision 17522)
+++ /branches/comu-ver2/html/install/sql/create_table_pgsql.sql	(revision 17601)
@@ -399,5 +399,5 @@
     product_id int4 NOT NULL,
     category_id int4 NOT NULL,
-    rank int4,
+    rank int4 NOT NULL,
     PRIMARY KEY(product_id, category_id)
 );
