Index: /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php	(revision 20595)
+++ /branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php	(revision 20612)
@@ -36,9 +36,4 @@
     // }}}
     // {{{ functions
-    /** ダウンロード用ファイル管理クラスのインスタンス */
-    var $objDownFile;
-
-    /** hidden 項目の配列 */
-    var $arrHidden;
 
     /**
@@ -93,14 +88,19 @@
         // 編集実行
         case 'edit':
-            // エラーチェック
-            $this->arrErr = $this->lfProductClassError($objFormParam->getHashArray());
-            if (empty($this->arrErr)){
+
+            $this->arrErr = $this->lfCheckProductsClass($objFormParam);
+
+            // エラーの無い場合は確認画面を表示
+            if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->tpl_mainpage = 'products/product_class_confirm.tpl';
                 $this->doDisp($objFormParam);
                 $objFormParam->setParam($_POST);
                 $objFormParam->convParam();
-
-            } else {
-                $this->doPreEdit($objFormParam->getValue('product_id'), false ,true);
+            }
+            // エラーが発生した場合
+            else {
+                $objFormParam->setParam($_POST);
+                $objFormParam->convParam();
+
                 /* TODO
                 // Hiddenからのデータを引き継ぐ
@@ -111,8 +111,4 @@
                 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());
                 */
-                $this->doDisp($objFormParam);
-                $objFormParam->setParam($_POST);
-                $objFormParam->convParam();
-
             }
             break;
@@ -126,4 +122,5 @@
         case 'pre_edit':
             $this->doPreEdit($objFormParam);
+
             /* TODO
             // HIDDEN用に配列を渡す。
@@ -134,5 +131,5 @@
         // 「表示する」ボタン押下時
         case 'disp':
-            $this->arrErr = $this->lfClassError();
+            $this->arrErr = $this->lfCheckSelectClass();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->doDisp($objFormParam);
@@ -142,4 +139,5 @@
         // ダウンロード商品ファイルアップロード
         case 'upload_down':
+
             /* TODO
             $product_id = $objFormParam->getValue('product_id');
@@ -166,4 +164,5 @@
         // ダウンロードファイルの削除
         case 'delete_down':
+
             /* TODO
             $product_id = $objFormParam->getValue('product_id');
@@ -203,15 +202,12 @@
             break;
         case 'complete':
-            // 完了ページ設定
             $this->tpl_mainpage = 'products/product_class_complete.tpl';
-            // ファイル情報の初期化
-            // Hiddenからのデータを引き継ぐ
-            $this->objDownFile->setHiddenFileList($_POST);
-            // 商品規格の登録
-            $arrList = $objFormParam->getHashArray();
-            $this->registerProductClass($arrList, $objFormParam->getValue('product_id'),
+            // TODO $this->objDownFile->setHiddenFileList($_POST);
+
+            $this->registerProductClass($objFormParam->getHashArray(), $objFormParam->getValue('product_id'),
                                         $objFormParam->getValue('total'));
+            // TODO
             // 一時ファイルを本番ディレクトリに移動する
-            $this->objDownFile->moveTempDownFile();
+            // $this->objDownFile->moveTempDownFile();
             break;
 
@@ -273,8 +269,8 @@
         $objFormParam->addParam("規格名2", "classcategory_name2", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK"));
         $objFormParam->addParam("商品規格ID", "product_class_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $objFormParam->addParam("在庫数", "stock", AMOUNT_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("在庫数", "stock", AMOUNT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"));
         $objFormParam->addParam("在庫数", "stock_unlimited", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
         $objFormParam->addParam(NORMAL_PRICE_TITLE, "price01", PRICE_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"));
-        $objFormParam->addParam(SALE_PRICE_TITLE, "price02", PRICE_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam(SALE_PRICE_TITLE, "price02", PRICE_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"));
         $objFormParam->addParam("商品種別", "product_type_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
         $objFormParam->addParam("削除フラグ", "del_flg", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
@@ -418,5 +414,5 @@
      * @return array エラーの配列
      */
-    function lfClassError() {
+    function lfCheckSelectClass() {
         $objErr = new SC_CheckError_Ex();
         $objErr->doFunc(array("規格1", "select_class_id1"), array("EXIST_CHECK"));
@@ -426,53 +422,73 @@
     }
 
-    // 商品規格エラーチェック
-    function lfProductClassError($array) {
-        $objErr = new SC_CheckError_Ex($array);
-        $no = 1; // FIXME 未定義変数の修正
-        while($array["classcategory_id1:".$no] != "") {
-            if($array["check:".$no] == 1) {
-                $objErr->doFunc(array("商品コード", "product_code:".$no, STEXT_LEN), array("MAX_LENGTH_CHECK"));
-                $objErr->doFunc(array(NORMAL_PRICE_TITLE, "price01:".$no, PRICE_LEN), array("NUM_CHECK", "MAX_LENGTH_CHECK"));
-                $objErr->doFunc(array(SALE_PRICE_TITLE, "price02:".$no, PRICE_LEN), array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
-
-                if($array["stock_unlimited:".$no] != '1') {
-                    $objErr->doFunc(array("在庫数", "stock:".$no, AMOUNT_LEN), array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+    /**
+     * 商品規格エラーチェック.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return array エラー結果の配列
+     */
+    function lfCheckProductsClass(&$objFormParam) {
+        $arrValues = $objFormParam->getHashArray();
+        $arrErr = $objFormParam->checkError();
+        $total = $objFormParam->getValue('total');
+
+        if (SC_Utils_Ex::isBlank($arrValues['check'])) {
+            $arrErr['check_empty'] = '※ 商品種別が選択されていません。<br />';
+        }
+
+        for ($i = 0; $i < $total; $i++) {
+
+            /*
+             * チェックボックスの入っている項目のみ, 必須チェックを行う.
+             * エラーを配列で返す必要があるため, SC_CheckError を使用しない.
+             */
+            if (!SC_Utils_Ex::isBlank($arrValues['check'][$i])) {
+
+                /*
+                 * 販売価格の必須チェック
+                 */
+                if (SC_Utils_Ex::isBlank($arrValues['price02'][$i])) {
+                    $arrErr['price02'][$i] = '※ ' . SALE_PRICE_TITLE . 'が入力されていません。<br />';
                 }
-
-                // 商品種別チェック
-                if (empty($array['product_type_id:' . $no])) {
-                    $objErr->arrErr['product_type_id:' . $no] = "※ 商品種別は、いずれかを選択してください。<br />";
+                /*
+                 * 在庫数の必須チェック
+                 */
+                if ((SC_Utils_Ex::isBlank($arrValues['stock_unlimited'][$i])
+                     || $arrValues['stock_unlimited'][$i] != 1)
+
+                    && SC_Utils_Ex::isBlank($arrValues['stock'][$i])) {
+                    $arrErr['stock'][$i] = '※ 在庫数が入力されていません。<br />';
                 }
-
-                //ダウンロード商品チェック
-                if($array["product_type_id:".$no] == PRODUCT_TYPE_DOWNLOAD) {
-                    $objErr->doFunc(array("ダウンロードファイル名", "down_filename:".$no, STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-                    if($array["down_realfilename:".$no] == "") {
-                        $objErr->arrErr["down_realfilename:".$no] = "※ ダウンロード商品の場合はダウンロード商品用ファイルをアップロードしてください。<br />";
+                /*
+                 * 商品種別の必須チェック
+                 */
+                if (SC_Utils_Ex::isBlank($arrValues['product_type_id'][$i])) {
+                    $arrErr['product_type_id'][$i] = "※ 商品種別は、いずれかを選択してください。<br />";
+                }
+                /*
+                 * ダウンロード商品の必須チェック
+                 */
+                if($arrValues['product_type_id'][$i] == PRODUCT_TYPE_DOWNLOAD) {
+                    if (SC_Utils_Ex::isBlank($arrValues['down_filename'][$i])) {
+                        $arrErr['down_filename'][$i] = "※ ダウンロード商品の場合はダウンロードファイル名を入力してください。<br />";
+                    }
+                    if (SC_Utils_Ex::isBlank($arrValues['down_realfilename'][$i])) {
+                        $arrErr['down_realfilename'][$i] = "※ ダウンロード商品の場合はダウンロード商品用ファイルをアップロードしてください。<br />";
                     }
                 }
-                //実商品チェック
-                else if($array["product_type_id:".$no] == PRODUCT_TYPE_DOWNLOAD) {
-                    if($array["down_filename:".$no] != "") {
-                        $objErr->arrErr["down_filename:".$no] = "※ 実商品の場合はダウンロードファイル名を設定できません。<br />";
+                /*
+                 * 通常商品チェック
+                 */
+                else if ($arrValues['product_type_id'][$i] == PRODUCT_TYPE_NORMAL) {
+                    if (!SC_Utils_Ex::isBlank($arrValues['down_filename'][$i])) {
+                        $arrErr['down_filename'] = "※ 通常商品の場合はダウンロードファイル名を設定できません。<br />";
                     }
-                    if($array["down_realfilename:".$no] != "") {
-                        $objErr->arrErr["down_realfilename:".$no] = "※ 実商品の場合はダウンロード商品用ファイルをアップロードできません。<br />ファイルを取り消してください。<br />";
+                    if (!SC_Utils_Ex::isBlank($arrValues['down_realfilename'][$i])) {
+                        $arrErr['down_realfilename'][$i] = "※ 実商品の場合はダウンロード商品用ファイルをアップロードできません。<br />ファイルを取り消してください。<br />";
                     }
                 }
             }
-            if (count($objErr->arrErr) > 0) {
-                $objErr->arrErr["error:".$no] = $objErr->arrErr["product_type_id:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["product_code:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["price01:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["price02:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["stock:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["stock:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["down_filename:".$no];
-                $objErr->arrErr["error:".$no] .= $objErr->arrErr["down_realfilename:".$no];
-            }
-            $no++;
-        }
-        return $objErr->arrErr;
+        }
+        return $arrErr;
     }
 
@@ -523,5 +539,6 @@
     function doPreEdit(&$objFormParam) {
         $product_id = $objFormParam->getValue('product_id');
-        $existsProductsClass = $this->getProductsClassAndClasscategory($product_id);
+        $objProduct = new SC_Product_Ex();
+        $existsProductsClass = $objProduct->getProductsClassFullByProductId($product_id, true);
 
         $class_id1 = $existsProductsClass[0]['class_id1'];
@@ -550,4 +567,8 @@
         $objFormParam->setValue('check', $arrChecks);
 
+        // class_id1, class_id2 を上書き
+        $objFormParam->setValue('class_id1', $class_id1);
+        $objFormParam->setValue('class_id2', $class_id2);
+
         // DBデータからダウンロードファイル名の読込
         $this->objDownFile->setDBFileList($this->arrForm);
@@ -590,9 +611,10 @@
         $objQuery =& SC_Query_Ex::getSingletonInstance();
 
-        $col = "T1.class_id AS class_id1, "
-            . " T1.classcategory_id AS classcategory_id1, "
-            . " T1.name AS classcategory_name1, "
-            . " T1.rank AS rank1 ";
-
+        $col = <<< __EOF__
+            T1.class_id AS class_id1,
+            T1.classcategory_id AS classcategory_id1,
+            T1.name AS classcategory_name1,
+            T1.rank AS rank1
+__EOF__;
         $table = '';
         $arrParams = array();
@@ -603,9 +625,11 @@
             $arrParams = array($class_id1);
         } else {
-            $col .= ","
-                . "T2.class_id AS class_id2,"
-                . "T2.classcategory_id AS classcategory_id2,"
-                . "T2.name AS classcategory_name2,"
-                . "T2.rank AS rank2";
+            $col .= <<< __EOF__
+                ,
+                T2.class_id AS class_id2,
+                T2.classcategory_id AS classcategory_id2,
+                T2.name AS classcategory_name2,
+                T2.rank AS rank2
+__EOF__;
             $table = "dtb_classcategory AS T1, dtb_classcategory AS T2";
             $objQuery->setWhere("T1.class_id = ? AND T2.class_id = ?");
@@ -626,25 +650,4 @@
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         return $objQuery->get('name', 'dtb_products', 'product_id = ?', array($product_id));
-    }
-
-    /**
-     * 検索パラメータを生成する.
-     *
-     * "search_" で始まるパラメータのみを生成して返す.
-     *
-     * TODO パラメータの妥当性検証
-     *
-     * @access private
-     * @param array $params 生成元の POST パラメータ
-     * @return array View にアサインするパラメータの配列
-     */
-    function createSearchParams($params) {
-        $results = array();
-        foreach ($params as $key => $val) {
-            if (substr($key, 0, 7) == "search_") {
-                $results[$key] = $val;
-            }
-        }
-        return $results;
     }
 
@@ -685,14 +688,3 @@
         return $objQuery->getRow($col, "dtb_products_class", "product_id = ? AND class_combination_id IS NULL", array($product_id));
     }
-
-    /**
-     * 登録済みの商品規格, 規格, 規格分類を取得する.
-     *
-     * @param integer $product_id 商品ID
-     * @return array 商品規格, 規格, 規格分類の配列
-     */
-    function getProductsClassAndClasscategory($productId) {
-        $objProduct = new SC_Product_Ex();
-        return $objProduct->getProductsClassFullByProductId($productId, true);
-    }
 }
Index: /branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl	(revision 20609)
+++ /branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl	(revision 20612)
@@ -67,4 +67,5 @@
 <input type="hidden" name="product_id" value="<!--{$arrForm.product_id.value|h}-->" />
 <input type="hidden" name="down_key" value="">
+<input type="hidden" name="total" value="<!--{$arrForm.total.value|h}-->" />
 <!--{* foreach key=name item=item from=$arrHidden *}-->
 <input type="hidden" name="<!--{$name}-->" value="<!--{$item|h}-->" />
@@ -134,4 +135,8 @@
     <input type="hidden" name="<!--{$key1}-->" value="<!--{$class_id1}-->" />
     <input type="hidden" name="<!--{$key2}-->" value="<!--{$class_id2}-->" />
+    <!--{if $arrErr.check_empty}-->
+        <span class="attention"><!--{$arrErr.check_empty}--></span>
+    <!--{/if}-->
+
     <table class="list" width="900">
         <colgroup width="5%">
@@ -161,14 +166,6 @@
             <!--{assign var=index value=$smarty.section.cnt.index}-->
 
-            <!--{* TODO *}-->
-            <!--{assign var=key value="error:`$smarty.section.cnt.iteration`"}-->
-            <!--{if $arrErr[$key] != ""}-->
             <tr>
-                <td colspan="10"><span class="attention"><!--{$arrErr[$key]}--></span></td>
-            </tr>
-            <!--{/if}-->
-            <tr >
-
-                <td class="center" >
+                <td class="center">
                     <!--{assign var=key value="classcategory_id1"}-->
                     <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" />
@@ -178,8 +175,14 @@
                     <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" />
                     <!--{assign var=key value="check"}-->
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
                     <input type="checkbox" name="<!--{$key}-->[<!--{$index}-->]" value="1" <!--{if $arrForm[$key].value[$index] == 1}-->checked="checked"<!--{/if}--> />
                 </td>
                 <td class="center">
                     <!--{assign var=key value="classcategory_name1"}-->
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
                     <!--{$arrForm[$key].value[$index]|h}-->
                     <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" />
@@ -187,4 +190,7 @@
                 <td class="center">
                     <!--{assign var=key value="classcategory_name2"}-->
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
                     <!--{$arrForm[$key].value[$index]|h}-->
                     <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" />
@@ -192,32 +198,54 @@
                 <td class="center">
                     <!--{assign var=key value="product_code"}-->
-                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> />
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
+                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key][$index] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> />
                 </td>
                 <td class="center">
                     <!--{assign var=key value="stock"}-->
-                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> id="<!--{$key}-->_<!--{$index}-->" />
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
+                     <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key][$index] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> id="<!--{$key}-->_<!--{$index}-->" />
                     <!--{assign var=key value="stock_unlimited"}--><br />
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
                     <input type="checkbox" name="<!--{$key}-->[<!--{$index}-->]" value="1" <!--{if $arrForm[$key].value[$index] == "1"}-->checked="checked"<!--{/if}--> onClick="fnCheckStockNoLimit('<!--{$index}-->','<!--{$smarty.const.DISABLED_RGB}-->');" id="<!--{$key}-->_<!--{$index}-->" /><label for="<!--{$key}-->_<!--{$index}-->">無制限</label>
                 </td>
                 <td class="center">
                     <!--{assign var=key value="price01"}-->
-                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> />
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
+                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key][$index] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> />
                 </td>
                 <td class="center">
                     <!--{assign var=key value="price02"}-->
-                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> />
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
+                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key][$index] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> />
                 </td>
                 <td class="class-product-type">
                     <!--{assign var=key value="product_type_id"}-->
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
                     <!--{html_radios name="`$key`[`$index`]" options=$arrProductType selected=$arrForm[$key].value[$index]|h separator='<br />'}-->
                 </td>
                 <td class="center">
                     <!--{assign var=key value="down_filename}-->
-                    <span class="attention"><!--{$arrErr[$key]}--></span>
-                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{if $arrErr[$key] != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" size="10" />
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
+                    <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{if $arrErr[$key][$index] != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" size="10" />
                 </td>
                 <td>
                     <!--{assign var=key value="down_realfilename"}-->
-                    <span class="attention"><!--{$arrErr[$key]}--></span>
+                    <!--{if $arrErr[$key][$index]}-->
+                        <span class="attention"><!--{$arrErr[$key][$index]}--></span>
+                    <!--{/if}-->
                     <!--{if $arrForm[$key].value[$index] != ""}-->
                         <!--{$arrForm[$key].value[$index]|h}-->
