[Svn-src-all:1375] [version-2_5-dev 20265] fixes #1015 [管理画面]コンテンツ管理(CSV出力項目設定以外)

nakanishi admin @ mail.ec-cube.net
2011年 2月 20日 (日) 20:25:16 JST


Subversion committed to /home/svn/open 20265
http://svn.ec-cube.net/open_trac/changeset/20265
┌────────────────────────────┐
│更新者 :  nakanishi                                    │
│更新日時:  2011-02-20 20:25:16 +0900 (日, 20  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
fixes #1015 [管理画面]コンテンツ管理(CSV出力項目設定以外)

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/Smarty/templates/admin/contents/index.tpl
D   branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend.tpl
D   branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend_search.tpl
A   branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend.tpl
A   branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend_search.tpl
U   branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
U   branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php
U   branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php

変更: branches/version-2_5-dev/data/Smarty/templates/admin/contents/index.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/contents/index.tpl	2011-02-20 11:19:43 UTC (rev 20264)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/contents/index.tpl	2011-02-20 11:25:16 UTC (rev 20265)
@@ -118,15 +118,15 @@
       <th>日付<span class="attention"> *</span></th>
       <td>
         <!--{if $arrErr.year || $arrErr.month || $arrErr.day}--><span class="attention"><!--{$arrErr.year}--><!--{$arrErr.month}--><!--{$arrErr.day}--></span><!--{/if}-->
-        <select name="year" <!--{if $arrErr.year}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
+        <select name="year" <!--{if $arrErr.year || $arrErr.month || $arrErr.day }-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
           <option value="" selected>----</option>
           <!--{html_options options=$arrYear selected=$arrForm.year}-->
         </select>年
-        <select name="month" <!--{if $arrErr.month}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
+        <select name="month" <!--{if $arrErr.year || $arrErr.month || $arrErr.day}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
           <option value="" selected>--</option>
           <!--{html_options options=$arrMonth selected=$arrForm.month}-->
         </select>月
-        <select name="day" <!--{if $arrErr.day}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
+        <select name="day" <!--{if $arrErr.year || $arrErr.month || $arrErr.day}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}-->>
           <option value="" selected>--</option>
           <!--{html_options options=$arrDay selected=$arrForm.day}-->
         </select>日

削除: branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend.tpl	2011-02-20 11:19:43 UTC (rev 20264)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend.tpl	2011-02-20 11:25:16 UTC (rev 20265)
@@ -1,121 +0,0 @@
-<!--{*
-/*
- * This file is part of EC-CUBE
- *
- * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-*}-->
-<script type="text/javascript">
-<!--
-function lfnCheckSubmit( fm ){
-  
-  var err = '';
-  /*
-  if ( ! fm["title"].value ){
-    err += '見出しコメントを入力して下さい。';
-  }
-  */
-  if ( ! fm["comment"].value ){
-    if ( err ) err += '';
-    err += 'コメントを入力して下さい。';
-  }
-  if ( err ){
-    alert(err);
-    return false;
-  } else {
-    if(window.confirm('内容を登録しても宜しいですか')){
-        fm.submit();
-        return true;
-    }
-  }
-}
-
-function lfnCheckSetItem( rank ){
-  var flag = true;
-  var checkRank = '<!--{$checkRank}-->';
-  if ( checkRank ){
-    if ( rank != checkRank ){
-      if( ! window.confirm('さきほど選択した<!--{$checkRank}-->位の情報は破棄されます。宜しいでしょうか')){
-        flag = false;
-      }
-    } 
-  }
-  
-  if ( flag ){
-    win03('./recommend_search.php?rank=' + rank,'search','615','600');
-  }
-}
-
-//-->
-</script>
-
-<div id="admin-contents" class="contents-main">
-  <table class="list center" id="recommend-table">
-    <colgroup width="4%">
-    <colgroup width="14%">
-    <colgroup width="27%">
-    <colgroup width="7%">
-    <colgroup width="8%">
-    <colgroup width="30%">
-    <colgroup width="15%">
-    <tr>
-      <th>#</th>
-      <th>画像</th>
-      <th>商品名</th>
-      <th>削除</th>
-      <th>変更</th>
-      <th>コメント</th>
-    </tr>
-    <!--{section name=cnt loop=$tpl_disp_max}-->
-    <!--▼おすすめ商品<!--{$smarty.section.cnt.iteration}-->-->
-    <tr>
-       <td><!--{$smarty.section.cnt.iteration}--></td>
-      <td>
-        <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->
-          <img src="<!--{$smarty.const.IMAGE_SAVE_URLPATH}--><!--{$arrItems[$smarty.section.cnt.iteration].main_list_image|sfNoImageMainList|h}-->" alt="<!--{$arrItems[$smarty.section.cnt.iteration].name|h}-->" />
-        <!--{/if}-->
-      </td>
-      <td class="left"><!--{$arrItems[$smarty.section.cnt.iteration].name|h}--></td>
-      <td>
-        <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->
-        <a href="#" onClick="return fnInsertValAndSubmit( document.form<!--{$smarty.section.cnt.iteration}-->, 'mode', 'delete', '削除します。宜しいですか' )">削除</a>
-        <!--{/if}-->
-      </td>
-      <td>
-        <a href="#" onclick="lfnCheckSetItem('<!--{$smarty.section.cnt.iteration}-->'); return false;" target="_blank">
-          <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->商品変更<!--{else}-->商品選択<!--{/if}--></a>
-      </td>
-      <td>
-        <form name="form<!--{$smarty.section.cnt.iteration}-->" id="form<!--{$smarty.section.cnt.iteration}-->" method="post" action="?">
-        <input type="hidden" name="mode" value="regist" />
-        <input type="hidden" name="product_id" value="<!--{$arrItems[$smarty.section.cnt.iteration].product_id|h}-->" />
-        <input type="hidden" name="category_id" value="<!--{$category_id|h}-->" />
-        <input type="hidden" name="rank" value="<!--{$arrItems[$smarty.section.cnt.iteration].rank|h}-->" />
-        <span class="attention"><!--{$arrErr[$smarty.section.cnt.iteration].comment}--></span>
-        <textarea class="top" name="comment" cols="45" rows="4" style="width: 337px; height: 82px; <!--{$arrErr[$smarty.section.cnt.iteration].comment|sfGetErrorColor}-->" <!--{$arrItems[$smarty.section.cnt.iteration].product_id|sfGetEnabled}-->><!--{$arrItems[$smarty.section.cnt.iteration].comment}--></textarea>
-        </form>
-        <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->
-        <a class="btn-action" href="javascript:;" onclick="return lfnCheckSubmit(document.form<!--{$smarty.section.cnt.iteration}-->);"><span class="btn-next">登録する</span></a
-        <!--{/if}-->
-    </td>
-    </tr>
-  <!--▲おすすめ商品<!--{$smarty.section.cnt.iteration}-->-->
-  <!--{/section}-->
-  </table>
-</div>

削除: branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend_search.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend_search.tpl	2011-02-20 11:19:43 UTC (rev 20264)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend_search.tpl	2011-02-20 11:25:16 UTC (rev 20265)
@@ -1,106 +0,0 @@
-<!--{*
-/*
- * This file is part of EC-CUBE
- *
- * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
- *
- * http://www.lockon.co.jp/
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-*}-->
-<!--{include file="`$smarty.const.TEMPLATE_ADMIN_REALDIR`admin_popup_header.tpl"}-->
-
-<script type="text/javascript">
-<!--
-self.moveTo(20,20);self.focus();
-
-function func_submit( id ){
-  var fm = window.opener.document.form<!--{$smarty.get.rank}-->;
-  fm.product_id.value = id;
-  fm.mode.value = 'set_item';
-  fm.rank.value = '<!--{$smarty.get.rank}-->';
-  fm.submit();
-  window.close();
-  return false;
-}
-//-->
-</script>
-
-<!--▼検索フォーム-->
-<form name="form1" id="form1" method="post" action="<!--{$smarty.server.REQUEST_URI|h}-->">
-<input name="mode" type="hidden" value="search" />
-<input name="search_pageno" type="hidden" value="" />
-  <table class="form">
-    <colgroup width="20%">
-    <colgroup width="80%">
-    <tr>
-      <th>カテゴリ</th>
-      <td>
-        <select name="search_category_id">
-        <option value="" selected="selected">選択してください</option>
-        <!--{html_options options=$arrCatList selected=$arrForm.search_category_id}-->
-        </select>
-      </td>
-    </tr>
-    <tr>
-      <th>商品名</th>
-      <td><input type="text" name="search_name" value="<!--{$arrForm.search_name}-->" size="35" class="box35" /></td>
-    </tr>
-  </table>
-  <div class="btn-area">
-    <ul>
-        <li><a class="btn-action" href="javascript:;" onclick="fnFormModeSubmit('form1', 'search', '', ''); return false;"><span class="btn-next">検索を開始</span></a></li>
-    </ul>
-  </div>
-  <!--{* ▼検索結果表示 *}-->
-  <!--{if $tpl_linemax}-->
-  <p><!--{$tpl_linemax}-->件が該当しました。</p>
-  <!--{$tpl_strnavi}-->
-    
-  <table class="list">
-    <colgroup width="15%">
-    <colgroup width="13%">
-    <colgroup width="60%">
-    <colgroup width="13%">
-    <tr>
-      <th>商品画像</th>
-      <th>商品コード</th>
-      <th>商品名</th>
-      <th>決定</th>
-    </tr>
-    <!--{section name=cnt loop=$arrProducts}-->
-    <!--▼商品<!--{$smarty.section.cnt.iteration}-->-->
-    <tr>
-      <td class="center">
-        <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrProducts[cnt].main_list_image|sfNoImageMainList|h}-->&width=65&height=65" alt="" />
-      </td>
-      <td><!--{$arrProducts[cnt].product_code|default:"-"|h}--></td>
-      <td><!--{$arrProducts[cnt].name|h}--></td>
-      <td class="center"><a href="" onClick="return func_submit(<!--{$arrProducts[cnt].product_id}-->)">決定</a></td>
-    </tr>
-    <!--▲商品<!--{$smarty.section.cnt.iteration}-->-->
-    <!--{sectionelse}-->
-    <tr>
-      <td colspan="4">商品が登録されていません</td>
-    </tr>  
-    <!--{/section}-->
-  </table>
-  <!--{/if}-->
-  <!--{* ▲検索結果表示 *}-->
-
-</form>
-
-<!--{include file="`$smarty.const.TEMPLATE_ADMIN_REALDIR`admin_popup_footer.tpl"}-->

コピーによる追加: branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend.tpl (コピー元: リビジョン 20244, branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend.tpl)
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend.tpl	                        (rev 0)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend.tpl	2011-02-20 11:25:16 UTC (rev 20265)
@@ -0,0 +1,121 @@
+<!--{*
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+*}-->
+<script type="text/javascript">
+<!--
+function lfnCheckSubmit( fm ){
+  
+  var err = '';
+  /*
+  if ( ! fm["title"].value ){
+    err += '見出しコメントを入力して下さい。';
+  }
+  */
+  if ( ! fm["comment"].value ){
+    if ( err ) err += '';
+    err += 'コメントを入力して下さい。';
+  }
+  if ( err ){
+    alert(err);
+    return false;
+  } else {
+    if(window.confirm('内容を登録しても宜しいですか')){
+        fm.submit();
+        return true;
+    }
+  }
+}
+
+function lfnCheckSetItem( rank ){
+  var flag = true;
+  var checkRank = '<!--{$checkRank}-->';
+  if ( checkRank ){
+    if ( rank != checkRank ){
+      if( ! window.confirm('さきほど選択した<!--{$checkRank}-->位の情報は破棄されます。宜しいでしょうか')){
+        flag = false;
+      }
+    } 
+  }
+  
+  if ( flag ){
+    win03('./recommend_search.php?rank=' + rank,'search','615','600');
+  }
+}
+
+//-->
+</script>
+
+<div id="admin-contents" class="contents-main">
+  <table class="list center" id="recommend-table">
+    <colgroup width="4%">
+    <colgroup width="14%">
+    <colgroup width="27%">
+    <colgroup width="7%">
+    <colgroup width="8%">
+    <colgroup width="30%">
+    <colgroup width="15%">
+    <tr>
+      <th>#</th>
+      <th>画像</th>
+      <th>商品名</th>
+      <th>削除</th>
+      <th>変更</th>
+      <th>コメント</th>
+    </tr>
+    <!--{section name=cnt loop=$tpl_disp_max}-->
+    <!--▼おすすめ商品<!--{$smarty.section.cnt.iteration}-->-->
+    <tr>
+       <td><!--{$smarty.section.cnt.iteration}--></td>
+      <td>
+        <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->
+          <img src="<!--{$smarty.const.IMAGE_SAVE_URLPATH}--><!--{$arrItems[$smarty.section.cnt.iteration].main_list_image|sfNoImageMainList|h}-->" alt="<!--{$arrItems[$smarty.section.cnt.iteration].name|h}-->" />
+        <!--{/if}-->
+      </td>
+      <td class="left"><!--{$arrItems[$smarty.section.cnt.iteration].name|h}--></td>
+      <td>
+        <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->
+        <a href="#" onClick="return fnInsertValAndSubmit( document.form<!--{$smarty.section.cnt.iteration}-->, 'mode', 'delete', '削除します。宜しいですか' )">削除</a>
+        <!--{/if}-->
+      </td>
+      <td>
+        <a href="#" onclick="lfnCheckSetItem('<!--{$smarty.section.cnt.iteration}-->'); return false;" target="_blank">
+          <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->商品変更<!--{else}-->商品選択<!--{/if}--></a>
+      </td>
+      <td>
+        <form name="form<!--{$smarty.section.cnt.iteration}-->" id="form<!--{$smarty.section.cnt.iteration}-->" method="post" action="?">
+        <input type="hidden" name="mode" value="regist" />
+        <input type="hidden" name="product_id" value="<!--{$arrItems[$smarty.section.cnt.iteration].product_id|h}-->" />
+        <input type="hidden" name="category_id" value="<!--{$category_id|h}-->" />
+        <input type="hidden" name="rank" value="<!--{$arrItems[$smarty.section.cnt.iteration].rank|h}-->" />
+        <span class="attention"><!--{$arrErr[$smarty.section.cnt.iteration].comment}--></span>
+        <textarea class="top" name="comment" cols="45" rows="4" style="width: 337px; height: 82px; <!--{$arrErr[$smarty.section.cnt.iteration].comment|sfGetErrorColor}-->" <!--{$arrItems[$smarty.section.cnt.iteration].product_id|sfGetEnabled}-->><!--{$arrItems[$smarty.section.cnt.iteration].comment}--></textarea>
+        </form>
+        <!--{if $arrItems[$smarty.section.cnt.iteration].product_id}-->
+        <a class="btn-action" href="javascript:;" onclick="return lfnCheckSubmit(document.form<!--{$smarty.section.cnt.iteration}-->);"><span class="btn-next">登録する</span></a
+        <!--{/if}-->
+    </td>
+    </tr>
+  <!--▲おすすめ商品<!--{$smarty.section.cnt.iteration}-->-->
+  <!--{/section}-->
+  </table>
+</div>

コピーによる追加: branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend_search.tpl (コピー元: リビジョン 20244, branches/version-2_5-dev/data/Smarty/templates/admin/contents/recomend_search.tpl)
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend_search.tpl	                        (rev 0)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/contents/recommend_search.tpl	2011-02-20 11:25:16 UTC (rev 20265)
@@ -0,0 +1,106 @@
+<!--{*
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+*}-->
+<!--{include file="`$smarty.const.TEMPLATE_ADMIN_REALDIR`admin_popup_header.tpl"}-->
+
+<script type="text/javascript">
+<!--
+self.moveTo(20,20);self.focus();
+
+function func_submit( id ){
+  var fm = window.opener.document.form<!--{$smarty.get.rank}-->;
+  fm.product_id.value = id;
+  fm.mode.value = 'set_item';
+  fm.rank.value = '<!--{$smarty.get.rank}-->';
+  fm.submit();
+  window.close();
+  return false;
+}
+//-->
+</script>
+
+<!--▼検索フォーム-->
+<form name="form1" id="form1" method="post" action="<!--{$smarty.server.REQUEST_URI|h}-->">
+<input name="mode" type="hidden" value="search" />
+<input name="search_pageno" type="hidden" value="" />
+  <table class="form">
+    <colgroup width="20%">
+    <colgroup width="80%">
+    <tr>
+      <th>カテゴリ</th>
+      <td>
+        <select name="search_category_id">
+        <option value="" selected="selected">選択してください</option>
+        <!--{html_options options=$arrCatList selected=$arrForm.search_category_id}-->
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <th>商品名</th>
+      <td><input type="text" name="search_name" value="<!--{$arrForm.search_name}-->" size="35" class="box35" /></td>
+    </tr>
+  </table>
+  <div class="btn-area">
+    <ul>
+        <li><a class="btn-action" href="javascript:;" onclick="fnFormModeSubmit('form1', 'search', '', ''); return false;"><span class="btn-next">検索を開始</span></a></li>
+    </ul>
+  </div>
+  <!--{* ▼検索結果表示 *}-->
+  <!--{if $tpl_linemax}-->
+  <p><!--{$tpl_linemax}-->件が該当しました。</p>
+  <!--{$tpl_strnavi}-->
+    
+  <table class="list">
+    <colgroup width="15%">
+    <colgroup width="13%">
+    <colgroup width="60%">
+    <colgroup width="13%">
+    <tr>
+      <th>商品画像</th>
+      <th>商品コード</th>
+      <th>商品名</th>
+      <th>決定</th>
+    </tr>
+    <!--{section name=cnt loop=$arrProducts}-->
+    <!--▼商品<!--{$smarty.section.cnt.iteration}-->-->
+    <tr>
+      <td class="center">
+        <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrProducts[cnt].main_list_image|sfNoImageMainList|h}-->&width=65&height=65" alt="" />
+      </td>
+      <td><!--{$arrProducts[cnt].product_code|default:"-"|h}--></td>
+      <td><!--{$arrProducts[cnt].name|h}--></td>
+      <td class="center"><a href="" onClick="return func_submit(<!--{$arrProducts[cnt].product_id}-->)">決定</a></td>
+    </tr>
+    <!--▲商品<!--{$smarty.section.cnt.iteration}-->-->
+    <!--{sectionelse}-->
+    <tr>
+      <td colspan="4">商品が登録されていません</td>
+    </tr>  
+    <!--{/section}-->
+  </table>
+  <!--{/if}-->
+  <!--{* ▲検索結果表示 *}-->
+
+</form>
+
+<!--{include file="`$smarty.const.TEMPLATE_ADMIN_REALDIR`admin_popup_footer.tpl"}-->

変更: branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php	2011-02-20 11:19:43 UTC (rev 20264)
+++ branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents.php	2011-02-20 11:25:16 UTC (rev 20265)
@@ -53,6 +53,11 @@
             'day' => date('j'),
         );
         $this->tpl_subtitle = '新着情報管理';
+        //---- 日付プルダウン設定
+        $objDate = new SC_Date(ADMIN_NEWS_STARTYEAR);
+        $this->arrYear = $objDate->getYear();
+        $this->arrMonth = $objDate->getMonth();
+        $this->arrDay = $objDate->getDay();
     }
 
     /**
@@ -71,98 +76,71 @@
      * @return void
      */
     function action() {
-
-        //---- ページ初期設定
-        $objQuery = new SC_Query();
-        $objDate = new SC_Date(ADMIN_NEWS_STARTYEAR);
-        $objDb = new SC_Helper_DB_Ex();
-
+        // アクセス権があるかを判定し、ない場合はエラー画面を表示する。
         SC_Utils_Ex::sfIsSuccess(new SC_Session());
+        
+        $objDb = new SC_Helper_DB_Ex();        
+        $objFormParam = new SC_FormParam();
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $objFormParam->convParam();
+        $news_id = $objFormParam->getValue('news_id');
 
-        //---- 日付プルダウン設定
-        $this->arrYear = $objDate->getYear();
-        $this->arrMonth = $objDate->getMonth();
-        $this->arrDay = $objDate->getDay();
-
         //---- 新規登録/編集登録
         switch ($this->getMode()) {
         case 'regist':
-            $_POST = $this->lfConvData($_POST);
-
-            if ($this->arrErr = $this->lfErrorCheck()) {       // 入力エラーのチェック
-                $this->arrForm = $_POST;
-            } else {
-
-                if (isset($_POST['link_method']) == ""){
-                    $_POST['link_method'] = 1;
-                }
-
-                $this->registDate = $_POST['year'] ."/". $_POST['month'] ."/". $_POST['day'];
-
-                //-- 編集登録
-                if (strlen($_POST["news_id"]) > 0 && is_numeric($_POST["news_id"])) {
-
-                    $this->lfNewsUpdate($objQuery);
-
-                    //-- 新規登録
+            $arrPost = $objFormParam->getHashArray();
+            $this->arrErr = $this->lfCheckError(&$objFormParam);
+            if (SC_Utils_Ex::isBlank($this->arrErr)) {
+                // ニュースIDの値がPOSTされて来た場合は既存データの編集とみなし、
+                // 更新メソッドを呼び出す。
+                // ニュースIDが存在しない場合は新規登録を行う。
+                $arrPost['link_method'] = $this->checkLinkMethod($arrPost['link_method']);
+                $arrPost['news_date'] = $this->getRegistDate($arrPost);
+                $member_id = $_SESSION['member_id'];
+                if (strlen($news_id) > 0 && is_numeric($news_id)) {
+                    $this->lfNewsUpdate($arrPost,$member_id);
                 } else {
-                    $this->lfNewsInsert($objQuery);
+                    $this->lfNewsInsert($arrPost,$member_id);
                 }
-
                 $this->tpl_onload = "window.alert('編集が完了しました');";
+            } else {
+                $this->arrForm = $arrPost;
             }
             break;
         case 'search':
-        //---- 編集データ取得
-            if (is_numeric($_POST["news_id"])) {
-                $sql = "SELECT *, cast(news_date as date) as cast_news_date FROM dtb_news WHERE news_id = ? ";
-                $result = $objQuery->getAll($sql, array($_POST["news_id"]));
-                $this->arrForm = $result[0];
-
-                $arrData = split("-", $result[0]["cast_news_date"]);
-                $this->arrForm['year']  = $arrData[0];
-                $this->arrForm['month'] = $arrData[1];
-                $this->arrForm['day']   = $arrData[2];
-
+            if (is_numeric($news_id)) {
+                list($this->arrForm) = $this->getNews($news_id);
+                list($this->arrForm['year'],$this->arrForm['month'],$this->arrForm['day']) = $this->splitNewsDate($this->arrForm['cast_news_date']);
                 $this->edit_mode = "on";
             }
             break;
         case 'delete':
         //---- データ削除
-            if (is_numeric($_POST["news_id"])) {
-                // rankを取得
-                $pre_rank = $objQuery->getOne(" SELECT rank FROM dtb_news WHERE del_flg = 0 AND news_id = ? ", array( $_POST['news_id']  ));
-
-                //-- 削除する新着情報以降のrankを1つ繰り上げておく
-                $objQuery->begin();
-                $sql = "UPDATE dtb_news SET rank = rank - 1, update_date = NOW() WHERE del_flg = 0 AND rank > ?";
-                $objQuery->query( $sql, array( $pre_rank  ) );
-
-                $sql = "UPDATE dtb_news SET rank = 0, del_flg = 1, update_date = NOW() WHERE news_id = ?";
-                $objQuery->query( $sql, array( $_POST['news_id'] ) );
-                $objQuery->commit();
-
+            if (is_numeric($news_id)) {
+                $this->p($news_id);
+                $pre_rank = $this->getRankByNewsId($news_id);
+                $this->computeRankForDelete($news_id,$pre_rank);
                 $this->objDisplay->reload();             //自分にリダイレクト(再読込による誤動作防止)
             }
             break;
         case 'move':
         //---- 表示順位移動
-            if (is_numeric($_POST["news_id"]) ) {
-                if ($_POST["term"] == "up") {
-                    $objDb->sfRankUp("dtb_news", "news_id", $_POST["news_id"]);
-                } else if ($_POST["term"] == "down") {
-                    $objDb->sfRankDown("dtb_news", "news_id", $_POST["news_id"]);
+            if (strlen($news_id) > 0 && is_numeric($news_id) == true ) {
+                $term = $objFormParam->getValue('term');
+                if ($term == "up") {
+                    $objDb->sfRankUp("dtb_news", "news_id", $news_id);
+                } else if ($term == "down") {
+                    $objDb->sfRankDown("dtb_news", "news_id", $news_id);
                 }
-                //sf_rebuildIndex($conn);
                 $this->objDisplay->reload();
             }
             break;
         case 'moveRankSet':
         //---- 指定表示順位移動
-            $key = "pos-".$_POST['news_id'];
-            $input_pos = mb_convert_kana($_POST[$key], "n");
+            $input_pos = $this->getPostRank($objFormParam,$news_id);
             if(SC_Utils_Ex::sfIsInt($input_pos)) {
-                $objDb->sfMoveRank("dtb_news", "news_id", $_POST['news_id'], $input_pos);
+                $objDb->sfMoveRank("dtb_news", "news_id", $news_id, $input_pos);
                 $this->objDisplay->reload();
             }
             break;
@@ -170,12 +148,9 @@
             break;
         }
 
-        //---- 全データ取得
-        $sql = "SELECT *, cast(news_date as date) as cast_news_date FROM dtb_news WHERE del_flg = '0' ORDER BY rank DESC";
-        $this->list_data = $objQuery->getAll($sql);
+        $this->list_data = $this->getNews();
         $this->line_max = count($this->list_data);
-        $sql = "SELECT MAX(rank) FROM dtb_news WHERE del_flg = '0'";        // rankの最大値を取得
-        $this->max_rank = $objQuery->getOne($sql);
+        $this->max_rank = $this->getRankMax();
     }
 
 
@@ -188,79 +163,204 @@
         parent::destroy();
     }
 
+    /**
+     * 入力されたパラメータのエラーチェックを行う。
+     * @param Object $objFormParam
+     * @return Array エラー内容
+     */
+    function lfCheckError(&$objFormParam){
+        $objErr = new SC_CheckError($objFormParam->getHashArray());
+        $objErr->arrErr = $objFormParam->checkError();
+        $objErr->doFunc(array("日付", "year", "month", "day"), array("CHECK_DATE"));
+        return $objErr->arrErr;
+    }
 
-    //---- 入力文字列を配列へ
-    function lfConvData( $data ){
 
-        // 文字列の変換(mb_convert_kanaの変換オプション)
-        $arrFlag = array(
-                         "year" => "n"
-                         ,"month" => "n"
-                         ,"day" => "n"
-                         ,"url" => "a"
-                         ,"news_title" => "aKV"
-                         ,"news_comment" => "aKV"
-                         ,"link_method" => "n"
-                         );
+    /**
+     * パラメータの初期化を行う
+     * @param Object $objFormParam
+     */
+    function lfInitParam(&$objFormParam){
+        $objFormParam->addParam("news_id", 'news_id');
+        $objFormParam->addParam("日付(年)", "year", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("日付(月)", "month", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("日付(日)", "day", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("タイトル", 'news_title', MTEXT_LEN, "KVa", array("EXIST_CHECK","MAX_LENGTH_CHECK","SPTAB_CHECK"));
+        $objFormParam->addParam("URL", 'news_url', URL_LEN, "KVa", array("MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("本文", 'news_comment', LTEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("別ウィンドウで開く", 'link_method', INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("ランク移動", 'term', INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK"));
+    }
 
-        if ( is_array($data) ){
-            foreach ($arrFlag as $key=>$line) {
-                $data[$key] = isset($data[$key])
-                                      ? mb_convert_kana($data[$key], $line)
-                                      : "";
-            }
-        }
+    /**
+     * 新着記事のデータの登録を行う
+     * @param Array $arrPost POSTデータの配列
+     * @param Integer $member_id 登録した管理者のID
+     */
+    function lfNewsInsert($arrPost,$member_id){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        
+        // rankの最大+1を取得する
+        $rank_max = $this->getRankMax();
+        $rank_max = $rank_max + 1;
+        
+        $table = 'dtb_news';
+        $sqlval = array();
+        $news_id = $objQuery->nextVal('dtb_news_news_id');
+        $sqlval['news_id'] = $news_id;
+        $sqlval['news_date'] = $arrPost['news_date'];
+        $sqlval['news_title'] = $arrPost['news_title'];
+        $sqlval['creator_id'] = $member_id;
+        $sqlval['news_url'] = $arrPost['news_url'];
+        $sqlval['link_method'] = $arrPost['link_method'];
+        $sqlval['news_comment'] = $arrPost['news_comment'];
+        $sqlval['rank'] = $rank_max;
+        $sqlval['create_date'] = 'now()';
+        $sqlval['update_date'] = 'now()';
+        $objQuery->insert($table, $sqlval);
 
-        return $data;
+        // 最初の1件目の登録はrankにNULLが入るので対策
+        $sqlval = array();
+        $sqlval['rank'] = 1;
+        $where = ' del_flg = 0 AND rank IS NULL';
+        $objQuery->update($table, $sqlval, $where);
     }
 
-    //---- 入力エラーチェック
-    function lfErrorCheck(){
+    
+    function lfNewsUpdate($arrPost,$member_id){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
 
-        $objErr = new SC_CheckError();
+        $table = 'dtb_news';
+        $sqlval = array();
+        $sqlval['news_date'] = $arrPost['news_date'];
+        $sqlval['news_title'] = $arrPost['news_title'];
+        $sqlval['creator_id'] = $member_id;
+        $sqlval['news_url'] = $arrPost['news_url'];
+        $sqlval['news_comment'] = $arrPost['news_comment'];
+        $sqlval['link_method'] = $arrPost['link_method'];
+        $sqlval['update_date'] = 'NOW()';
+        $where = 'news_id = ?';
+        $arrValIn = array($arrPost['news_id']);
+        $objQuery->update($table, $sqlval, $where, $arrValIn);
+    }
 
-        $objErr->doFunc(array("日付(年)", "year"), array("EXIST_CHECK"));
-        $objErr->doFunc(array("日付(月)", "month"), array("EXIST_CHECK"));
-        $objErr->doFunc(array("日付(日)", "day"), array("EXIST_CHECK"));
-        $objErr->doFunc(array("日付", "year", "month", "day"), array("CHECK_DATE"));
-        $objErr->doFunc(array("タイトル", 'news_title', MTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("本文", 'url', URL_LEN), array("MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("本文", 'news_comment', LTEXT_LEN), array("MAX_LENGTH_CHECK"));
-
-        return $objErr->arrErr;
+    /**
+     * データの登録日を返す。
+     * @param Array $arrPost POSTのグローバル変数
+     * @return string 登録日を示す文字列
+     */
+    function getRegistDate($arrPost){
+        $registDate = $arrPost['year'] ."/". $arrPost['month'] ."/". $arrPost['day'];
+        return $registDate;
     }
 
-    //INSERT文
-    function lfNewsInsert(&$objQuery){
 
-        if ($_POST["link_method"] == "") {
-            $_POST["link_method"] = 1;
+    /**
+     * チェックボックスの値が空の時は無効な値として1を格納する
+     * @param int $link_method
+     * @return int
+     */
+    function checkLinkMethod($link_method){
+        if(strlen($link_method) == 0){
+            $link_method = 1;
         }
+        return $link_method;
+    }
 
-        //rankの最大+1を取得する
-        $rank_max = $objQuery->getOne("SELECT MAX(rank) + 1 FROM dtb_news WHERE del_flg = '0'");
+    /**
+     * ニュース記事を取得する。
+     * @param Integer news_id ニュースID
+     */
+    function getNews($news_id = ''){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        $col = '*, cast(news_date as date) as cast_news_date';
+        $table = 'dtb_news';
+        $order = 'rank DESC';
+        if(strlen($news_id) == 0){
+            $where = 'del_flg = 0';
+            $arrval = array();
+        }else{
+            $where = 'del_flg = 0 AND news_id = ?';
+            $arrval = array($news_id);
+        }
+        $objQuery->setOrder($order);
+        return $objQuery->select($col, $table, $where,$arrval);
+    }
 
-        $sql = "INSERT INTO dtb_news (news_id, news_date, news_title, creator_id, news_url, link_method, news_comment, rank, create_date, update_date)
-            VALUES (?,?,?,?,?,?,?,?,now(),now())";
-        $arrRegist = array($objQuery->nextVal('dtb_news_news_id'), $this->registDate, $_POST["news_title"], $_SESSION['member_id'],  $_POST["news_url"], $_POST["link_method"], $_POST["news_comment"], $rank_max);
+    /**
+     * 指定されたニュースのランクの値を取得する。
+     * @param Integer $news_id
+     */
+    function getRankByNewsId($news_id){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        $col = 'rank';
+        $table = 'dtb_news';
+        $where = 'del_flg = 0 AND news_id = ?';
+        $arrval = array($news_id);
+        list($rank) = $objQuery->select($col, $table, $where, $arrval);
+        return $rank['rank'];
+    }
 
-        $objQuery->query($sql, $arrRegist);
+    /**
+     * 削除する新着情報以降のrankを1つ繰り上げる。
+     * @param Integer $news_id
+     * @param Integer $rank
+     */
+    function computeRankForDelete($news_id,$rank){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        $objQuery->begin();
+        $table = 'dtb_news';
+        $sqlval = array();
+        $sqlval['rank'] = $rank;
+        $sqlval['update_date'] = 'NOW()';
+        $where = 'del_flg = 0 AND rank > ?';
+        $arrValIn = array($rank);
+        $objQuery->update($table, $sqlval, $where, $arrValIn);
 
-        // 最初の1件目の登録はrankにNULLが入るので対策
-        $sql = "UPDATE dtb_news SET rank = 1 WHERE del_flg = 0 AND rank IS NULL";
-        $objQuery->query($sql);
+        $sqlval = array();
+        $sqlval['rank'] = '0';
+        $sqlval['del_flg'] = '1';
+        $sqlval['update_date'] = 'NOW()';
+        $where = 'news_id = ?';
+        $arrValIn = array($news_id);
+        $objQuery->update($table, $sqlval, $where, $arrValIn);
+        $objQuery->commit();
     }
 
-    function lfNewsUpdate(&$objQuery){
+    /**
+     * ニュースの日付の値をフロントでの表示形式に合わせるために分割
+     * @param String $news_date
+     */
+    function splitNewsDate($news_date){
+        return split("-", $news_date);
+    }
 
-        if ($_POST["link_method"] == "") {
-            $_POST["link_method"] = 1;
-        }
 
-        $sql = "UPDATE dtb_news SET news_date = ?, news_title = ?, creator_id = ?, update_date = NOW(),  news_url = ?, link_method = ?, news_comment = ? WHERE news_id = ?";
-        $arrRegist = array($this->registDate, $_POST['news_title'], $_SESSION['member_id'], $_POST['news_url'], $_POST["link_method"], $_POST['news_comment'], $_POST['news_id']);
+    /**
+     * ランクの最大値の値を返す。
+     * @return Intger $max ランクの最大値の値
+     */
+    function getRankMax(){
+        $objQuery =& SC_Query::getSingletonInstance();
+        $col = 'MAX(rank)';
+        $table = 'dtb_news';
+        $where = 'del_flg = 0';
+        list($result) = $objQuery->select($col, $table, $where);
+        return $result['max'];
+    }
 
-        $objQuery->query($sql, $arrRegist);
+    /**
+     * POSTされたランクの値を取得する
+     * @param Object $objFormParam
+     * @param Integer $news_id
+     */
+    function getPostRank($news_id){
+        if(strlen($news_id) > 0 && is_numeric($news_id) == true){
+           $key = "pos-".$news_id;
+           $input_pos = $_POST[$key];
+           return $input_pos;
+        }
     }
+
 }
 ?>

変更: branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php	2011-02-20 11:19:43 UTC (rev 20264)
+++ branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_Recommend.php	2011-02-20 11:25:16 UTC (rev 20265)
@@ -43,11 +43,13 @@
      */
     function init() {
         parent::init();
-        $this->tpl_mainpage = 'contents/recomend.tpl';
+        $this->tpl_mainpage = 'contents/recommend.tpl';
         $this->tpl_mainno = 'contents';
         $this->tpl_subnavi = 'contents/subnavi.tpl';
         $this->tpl_subno = "recommend";
         $this->tpl_subtitle = 'おすすめ商品管理';
+        //最大登録数の表示
+        $this->tpl_disp_max = RECOMMEND_NUM;
     }
 
     /**
@@ -66,96 +68,53 @@
      * @return void
      */
     function action() {
-        $objQuery = new SC_Query();
-        $objSess = new SC_Session();
-
-        $arrRegistColumn = array(
-                                 array(  "column" => "product_id", "convert" => "n" ),
-                                 array(  "column" => "category_id", "convert" => "n" ),
-                                 array(  "column" => "rank", "convert" => "n" ),
-                                 array(  "column" => "comment", "convert" => "aKV" ),
-                                 );
-
         // 認証可否の判定
-        SC_Utils_Ex::sfIsSuccess($objSess);
-
-        //最大登録数の表示
-        $this->tpl_disp_max = RECOMMEND_NUM;
-
-        if (!isset($_POST['category_id'])) $_POST['category_id'] = "";
-        //TODO: 要リファクタリング(MODE switch 2か所で行われている)
+        SC_Utils_Ex::sfIsSuccess(new SC_Session());
+        $objFormParam = new SC_FormParam();
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $objFormParam->convParam();
+        
         switch ($this->getMode()) {
-        case 'regist':
-            // 登録時
-            // 入力文字の強制変換
-            $this->arrForm = $_POST;
-            $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn);
-            // エラーチェック
-            $this->arrErr[$this->arrForm['rank']] = $this->lfErrorCheck();
-            if ( ! $this->arrErr[$this->arrForm['rank']]) {
-                // 古いのを消す
-                $sql = "DELETE FROM dtb_best_products WHERE category_id = ? AND rank = ?";
-                $objQuery->query($sql, array($this->arrForm['category_id'] ,$this->arrForm['rank']));
-
-                // DB登録
-                $this->arrForm['creator_id'] = $_SESSION['member_id'];
-                $this->arrForm['update_date'] = "NOW()";
-                $this->arrForm['create_date'] = "NOW()";
-                $this->arrForm['best_id'] = $objQuery->nextVal('dtb_best_products_best_id');
-                $objQuery->insert("dtb_best_products", $this->arrForm );
+        case 'regist': // 商品を登録する。
+            $this->arrErr = $this->lfCheckError(&$objFormParam);
+            $arrPost = $objFormParam->getHashArray();
+            // 登録処理にエラーがあった場合は商品選択の時と同じ処理を行う。
+            if (SC_Utils_Ex::isBlank($this->arrErr)) {
+                $member_id = $_SESSION['member_id'];
+                $this->insertRecommendProduct($arrPost,$member_id);
+                $arrItems = $this->getRecommendProducts();
+            }else{
+                $arrItems = $this->setProducts($arrPost, $arrItems);
+                $this->checkRank = $arrPost['rank'];
             }
+            $this->tpl_onload = "window.alert('編集が完了しました');";
             break;
-        case 'delete':
-            // 削除時
-            $sql = "DELETE FROM dtb_best_products WHERE category_id = ? AND rank = ?";
-            $objQuery->query($sql, array($_POST['category_id'] ,$_POST['rank']));
+        case 'delete': // 商品を削除する。
+            $this->arrErr = $this->lfCheckError(&$objFormParam);
+            $arrPost = $objFormParam->getHashArray();
+            if (SC_Utils_Ex::isBlank($this->arrErr)) {
+                $this->deleteProduct($arrPost);
+                $arrItems = $this->getRecommendProducts();
+            }
+            $this->tpl_onload = "window.alert('削除しました');";
             break;
-        default:
-            break;
-        }
-
-        // カテゴリID取得 無いときはトップページ
-        if ( SC_Utils_Ex::sfIsInt($_POST['category_id']) ){
-            $this->category_id = $_POST['category_id'];
-        } else {
-            $this->category_id = 0;
-        }
-
-        // 既に登録されている内容を取得する
-        $sql = "SELECT B.name, B.main_list_image, A.* FROM dtb_best_products as A INNER JOIN dtb_products as B USING (product_id)
-		 WHERE A.del_flg = 0 ORDER BY rank";
-        $arrItems = $objQuery->getAll($sql);
-        foreach( $arrItems as $data ){
-            $this->arrItems[$data['rank']] = $data;
-        }
-
-        // 商品変更時 or 登録エラー時は、選択された商品に一時的に置き換える
-        //TODO: 要リファクタリング(MODE switch 2か所で行われている)
-        switch ($this->getMode()) {
-        case 'set_item':
-        case 'regist':
-            if (!empty($this->arrErr[$this->arrForm['rank']])) {
-                $sql = "SELECT product_id, name, main_list_image FROM dtb_products WHERE product_id = ? AND del_flg = 0";
-                $result = $objQuery->getAll($sql, array($_POST['product_id']));
-                if ( $result ){
-                    $data = $result[0];
-                    foreach( $data as $key=>$val){
-                        $this->arrItems[$_POST['rank']][$key] = $val;
-                    }
-                    $this->arrItems[$_POST['rank']]['rank'] = $_POST['rank'];
-                }
-                $this->checkRank = $_POST['rank'];
+        case 'set_item': // 商品を選択する。
+            $this->arrErr = $this->lfCheckError(&$objFormParam);
+            $arrPost = $objFormParam->getHashArray();
+            if (SC_Utils_Ex::isBlank($this->arrErr['rank']) && SC_Utils_Ex::isBlank($this->arrErr['product_id'])) {
+                $arrItems = $this->setProducts($arrPost, $this->getRecommendProducts());
+                $this->checkRank = $arrPost['rank'];
             }
             break;
         default:
+            $arrItems = $this->getRecommendProducts();
             break;
         }
+        
+        $this->category_id = $this->getCategoryId($arrPost['category_id']);
+        $this->arrItems = $arrItems;
 
-        //各ページ共通
-        $this->cnt_question = 6;
-        $this->arrActive = isset($arrActive) ? $arrActive : "";;
-        $this->arrQuestion = isset($arrQuestion) ? $arrQuestion : "";
-
         // カテゴリ取得
         $objDb = new SC_Helper_DB_Ex();
         $this->arrCatList = $objDb->sfGetCategoryList("level = 1");
@@ -170,34 +129,126 @@
         parent::destroy();
     }
 
-    //---- 取得文字列の変換
-    function lfConvertParam($array, $arrRegistColumn) {
+     /**
+     * パラメータの初期化を行う
+     * @param Object $objFormParam
+     */
+    function lfInitParam(&$objFormParam){
+        $objFormParam->addParam("商品ID", "product_id", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("カテゴリID", "category_id", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("ランク", "rank", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("コメント", "comment", LTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
+    }
 
-        // カラム名とコンバート情報
-        foreach ($arrRegistColumn as $data) {
-            $arrConvList[ $data["column"] ] = $data["convert"];
+    /**
+     * 入力されたパラメータのエラーチェックを行う。
+     * @param Object $objFormParam
+     * @return Array エラー内容
+     */
+    function lfCheckError(&$objFormParam){
+        $objErr = new SC_CheckError($objFormParam->getHashArray());
+        $objErr->arrErr = $objFormParam->checkError();
+        return $objErr->arrErr;
+    }
+
+    /**
+     * 既に登録されている内容を取得する
+     * @return Array $arrReturnProducts データベースに登録されているおすすめ商品の配列
+     */
+    function getRecommendProducts(){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        $col = 'dtb_products.name,dtb_products.main_list_image,dtb_best_products.*';
+        $table = 'dtb_best_products INNER JOIN dtb_products USING (product_id)';
+        $where = 'dtb_best_products.del_flg = 0';
+        $order = 'rank';
+        $objQuery->setOrder($order);
+        $arrProducts = $objQuery->select($col, $table, $where);
+        
+        $arrReturnProducts = array();
+        foreach( $arrProducts as $data ){
+            $arrReturnProducts[$data['rank']] = $data;
         }
-        // 文字変換
-        $new_array = array();
-        foreach ($arrConvList as $key => $val) {
-            $new_array[$key] = isset($array[$key]) ? $array[$key] : "";
-            if( strlen($val) > 0) {
-                $new_array[$key] = mb_convert_kana($new_array[$key] ,$val);
-            }
-        }
-        return $new_array;
+        return $arrReturnProducts;
+    }
 
+    /**
+     * おすすめ商品の新規登録を行う。
+     * @param Array $arrPost POSTの値を格納した配列
+     * @param Integer $member_id 登録した管理者を示すID
+     */
+    function insertRecommendProduct($arrPost,$member_id){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        // 古いおすすめ商品のデータを削除する。
+        $this->deleteProduct($arrPost);
+
+        $sqlval = array();
+        $sqlval['product_id'] = $arrPost['product_id'];
+        $sqlval['category_id'] = $arrPost['category_id'];
+        $sqlval['rank'] = $arrPost['rank'];
+        $sqlval['comment'] = $arrPost['comment'];
+        $sqlval['creator_id'] = $member_id;
+        $sqlval['create_date'] = "NOW()";
+        $sqlval['update_date'] = "NOW()";
+        $sqlval['best_id'] = $objQuery->nextVal('dtb_best_products_best_id');
+        $objQuery->insert("dtb_best_products", $sqlval);
     }
 
-    /* 入力エラーチェック */
-    function lfErrorCheck() {
-        $objQuery = new SC_Query;
-        $objErr = new SC_CheckError();
+    /**
+     * データを削除する
+     * @param Array $arrPost POSTの値を格納した配列
+     */
+    function deleteProduct($arrPost){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        $table = 'dtb_best_products';
+        $where = 'category_id = ? AND rank = ?';
+        $arrval = array($arrPost['category_id'],$arrPost['rank']);
+        $objQuery->delete($table, $where, $arrval);
+    }
 
-        $objErr->doFunc(array("コメント", "comment", LTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
+    /**
+     * 商品情報を取得する
+     * @param Integer $product_id 商品ID
+     * @return Array $arrProduct 商品のデータを格納した配列
+     */
+    function getProduct($product_id){
+        $objQuery = $objQuery =& SC_Query::getSingletonInstance();
+        $col = 'product_id,main_list_image,name';
+        $table = 'dtb_products';
+        $where = 'product_id = ? AND del_flg = 0';
+        $arrval = array($product_id);
+        $arrProduct = $objQuery->select($col, $table, $where, $arrval);
+        return $arrProduct[0];
+    }
 
-        return $objErr->arrErr;
+    /**
+     * 商品のデータを表示用に処理する
+     * @param Array $arrPost POSTのデータを格納した配列
+     * @param Array $arrItems フロントに表示される商品の情報を格納した配列
+     */
+    function setProducts($arrPost,$arrItems){
+        $arrProduct = $this->getProduct($arrPost['product_id']);
+        if (count($arrProduct) > 0) {
+            $rank = $arrPost['rank'];
+            foreach( $arrProduct as $key => $val){
+                $arrItems[$rank][$key] = $val;
+            }
+            $arrItems[$rank]['rank'] = $rank;
+        }
+        return $arrItems;
     }
 
+    /**
+     * カテゴリーIDを取得する。
+     * @param Integer $category_id
+     * @return Integer
+     */
+    function getCategoryId($category_id){
+        if ( SC_Utils_Ex::sfIsInt($category_id)){
+            return $category_id;
+        }else{
+            return 0;
+        }
+    }
+
 }
 ?>

変更: branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php	2011-02-20 11:19:43 UTC (rev 20264)
+++ branches/version-2_5-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php	2011-02-20 11:25:16 UTC (rev 20265)
@@ -65,34 +65,100 @@
      * @return void
      */
     function action() {
-        $objSess = new SC_Session();
+        // 認証可否の判定
+        SC_Utils_Ex::sfIsSuccess(new SC_Session());
         $objDb = new SC_Helper_DB_Ex();
+        $objFormParam = new SC_FormParam();
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $objFormParam->convParam();
 
-        // 認証可否の判定
-        SC_Utils_Ex::sfIsSuccess($objSess);
-
         switch ($this->getMode()) {
         case 'search':
+            $objQuery = new SC_Query();
             // POST値の引き継ぎ
-            $this->arrForm = $_POST;
-            // 入力文字の強制変換
-            $this->lfConvertParam();
+            $this->arrErr = $this->lfCheckError(&$objFormParam);
+            $arrPost = $objFormParam->getHashArray();
+            // 入力された値にエラーがない場合、検索処理を行う。
+            // 検索結果の数に応じてページャの処理も入れる。
+            if (SC_Utils_Ex::isBlank($this->arrErr)) {
+                $where = 'del_flg = 0';
+                $order = "update_date DESC, product_id DESC";
+                list($where, $arrval) = $this->getSearchParam(&$objDb,$arrPost,$where);
+                $linemax = $this->getLineCount($where, $arrval);
+                $page_max = $this->setPageMax($arrPost['search_page_max']);
 
-            $where = 'del_flg = 0';
+                // ページ送りの取得
+                $objNavi = new SC_PageNavi($arrPost['search_pageno'], $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
+                $this->tpl_linemax = $linemax;               // 何件が該当しました。表示用
+                $this->tpl_strnavi = $objNavi->strnavi;      // 表示文字列
+                $startno = $objNavi->start_row;
 
-            /* 入力エラーなし */
-            foreach ($this->arrForm as $key => $val) {
+                // 取得範囲の指定(開始行番号、行数のセット)
+                $objQuery->setLimitOffset($page_max, $startno);
+                $objQuery->setOrder($order);
+                $this->arrForm = $arrPost;
+                // 検索結果の取得
+                $this->arrProducts = $this->getProducts($objQuery, $arrval, $where);
+            }
+            break;
+        default:
+            break;
+        }
+
+        // カテゴリ取得
+        $this->arrCatList = $objDb->sfGetCategoryList();
+        $this->setTemplate('contents/recommend_search.tpl');
+    }
+
+    /**
+     * デストラクタ.
+     *
+     * @return void
+     */
+    function destroy() {
+        parent::destroy();
+    }
+
+    /**
+     * パラメータの初期化を行う
+     * @param Object $objFormParam
+     */
+    function lfInitParam(&$objFormParam){
+        $objFormParam->addParam("商品ID", "search_name", LTEXT_LEN, "KVa", array( "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("商品ID", "search_category_id", INT_LEN, "n", array( "MAX_LENGTH_CHECK","NUM_CHECK"));
+        $objFormParam->addParam("商品コード", "search_product_code", LTEXT_LEN, "KVa", array( "MAX_LENGTH_CHECK"));
+    }
+
+    /**
+     * 入力されたパラメータのエラーチェックを行う。
+     * @param Object $objFormParam
+     * @return Array エラー内容
+     */
+    function lfCheckError(&$objFormParam){
+        $objErr = new SC_CheckError($objFormParam->getHashArray());
+        $objErr->arrErr = $objFormParam->checkError();
+        return $objErr->arrErr;
+    }
+
+    /**
+     * 検索パラメータを返す。
+     * @param Array $arrPost
+     * @return Array $arrSQL 検索条件とパラメータを配列にして返す。
+     */
+    function getSearchParam(&$objDb,$arrPost,$where){
+            $arrval = array();
+            foreach ($arrPost as $key => $val) {
                 if($val == "") {
                     continue;
                 }
-
                 switch ($key) {
                 case 'search_name':
                     $where .= " AND name ILIKE ?";
                     $arrval[] = "%$val%";
                     break;
                 case 'search_category_id':
-                     list($tmp_where, $tmp_arrval) = $objDb->sfGetCatWhere($val);
+                    list($tmp_where, $tmp_arrval) = $objDb->sfGetCatWhere($val);
                     if($tmp_where != "") {
                         $where.= " AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")";
                         $arrval = array_merge((array)$arrval, (array)$tmp_arrval);
@@ -106,75 +172,29 @@
                     break;
                 }
             }
+            return array($where, $arrval);
+    }
 
-            $order = "update_date DESC, product_id DESC";
+    function getLineCount($where,$arrval){
+        $objQuery =& SC_Query::getSingletonInstance();
+        $linemax = $objQuery->count("dtb_products", $where, $arrval);
+        return $linemax;
+    }
 
-            $objQuery = new SC_Query();
-            // 行数の取得
-            if (empty($arrval)) $arrval = array();
-            $linemax = $objQuery->count("dtb_products", $where, $arrval);
-            $this->tpl_linemax = $linemax;               // 何件が該当しました。表示用
-
+    function setPageMax($search_page_max){
             // ページ送りの処理
-            if(isset($_POST['search_page_max'])
-               && is_numeric($_POST['search_page_max'])) {
-                $page_max = $_POST['search_page_max'];
+            if(isset($search_page_max)  && is_numeric($search_page_max)) {
+                $page_max = $search_page_max;
             } else {
                 $page_max = SEARCH_PMAX;
             }
-
-            // ページ送りの取得
-            $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
-            $this->tpl_strnavi = $objNavi->strnavi;      // 表示文字列
-            $startno = $objNavi->start_row;
-
-            // 取得範囲の指定(開始行番号、行数のセット)
-            $objQuery->setLimitOffset($page_max, $startno);
-            // 表示順序
-            $objQuery->setOrder($order);
-
-            // FIXME 商品コードの表示
-            // 検索結果の取得
-            $this->arrProducts = $objQuery->select("*", SC_Product::alldtlSQL(), $where, $arrval);
-            break;
-        default:
-            break;
-        }
-
-        // カテゴリ取得
-        $this->arrCatList = $objDb->sfGetCategoryList();
-
-        $this->setTemplate('contents/recomend_search.tpl');
+            return $page_max;
     }
 
-    /**
-     * デストラクタ.
-     *
-     * @return void
-     */
-    function destroy() {
-        parent::destroy();
+    function getProducts(&$objQuery,$arrval,$where){
+        $objQuery =& SC_Query::getSingletonInstance();
+        return $objQuery->select("*", SC_Product::alldtlSQL(), $where, $arrval);
     }
 
-    /* 取得文字列の変換 */
-    function lfConvertParam() {
-        /*
-         *  文字列の変換
-         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
-         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
-         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
-         *  n :  「全角」数字を「半角(ハンカク)」に変換
-         */
-        $arrConvList['search_name'] = "KVa";
-        $arrConvList['search_product_code'] = "KVa";
-
-        // 文字変換
-        foreach ($arrConvList as $key => $val) {
-            // POSTされてきた値のみ変換する。
-            if(isset($this->arrForm[$key])) {
-                $this->arrForm[$key] = mb_convert_kana($this->arrForm[$key] ,$val);
-            }
-        }
-    }
 }
 ?>




Svn-src-all メーリングリストの案内