[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 メーリングリストの案内