Changeset 20595
- Timestamp:
- 2011/03/10 23:23:15 (13 years ago)
- bzr:base-revision:
- svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:20594
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/Smarty/templates/admin/products/product_class.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Fproducts%2Fproduct_class.tpl
data/Smarty/templates/admin/products/product_class_confirm.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Fproducts%2Fproduct_class_confirm.tpl
data/class/SC_Product.php 18277@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2FSC_Product.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
data/class/pages/admin/products/LC_Page_Admin_Products.php 15342@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products.php
data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php 15486@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_ClassCategory.php
data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php 15559@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_ProductClass.php
data/class/pages/products/LC_Page_Products_List.php 15154@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fproducts%2FLC_Page_Products_List.php
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql
html/user_data/packages/admin/js/admin.js 18900@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fversion-2_5-dev%2Fhtml%2Fuser_data%2Fpackages%2Fadmin%2Fjs%2Fadmin.js- bzr:mapping-version:
- v4
- bzr:merge:
ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20110310142305-qjs7yo89ouuc2kyb
- bzr:revno:
- 3322
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-revisions:
data/Smarty/templates/admin/products/product_class.tpl ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9
data/Smarty/templates/admin/products/product_class_confirm.tpl ohkouchi@loop-az.jp-20110310120612-5yubhkd34q0kh1wv
data/class/SC_Product.php ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9
data/class/helper/SC_Helper_DB.php ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9
data/class/pages/admin/products/LC_Page_Admin_Products.php ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9
data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9
data/class/pages/products/LC_Page_Products_List.php ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9
html/install/sql/insert_data.sql ohkouchi@loop-az.jp-20110310141144-qucx7d0zkt4jgao9
html/user_data/packages/admin/js/admin.js ohkouchi@loop-az.jp-20110310121605-jifwd9debb5hzvwo- bzr:timestamp:
- 2011-03-10 23:23:05.288000107 +0900
- bzr:user-agent:
- bzr2.2.1+bzr-svn1.0.4
- svn:original-date:
- 2011-03-10T14:23:05.288000Z
- Location:
- branches/version-2_5-dev
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl
r20514 r20595 22 22 */ 23 23 *}--> 24 <script type="text/javascript">//<![CDATA[ 25 $(function() { 26 $('input[id^=stock_unlimited_]').each(function() { 27 var index = $(this).attr('id').replace(/^stock_unlimited_/ig, ''); 28 var checked = $(this).attr('checked'); 29 30 if (checked) { 31 $('#stock_' + index) 32 .attr('readonly', true) 33 .css('background-color', '<!--{$smarty.const.DISABLED_RGB}-->'); 34 } 35 }); 36 37 $('input[id^=stock_unlimited_]').change(function() { 38 var index = $(this).attr('id').replace(/^stock_unlimited_/ig, ''); 39 var checked = $(this).attr('checked'); 40 41 if (checked) { 42 $('#stock_' + index) 43 .attr('readonly', true) 44 .css('background-color', '<!--{$smarty.const.DISABLED_RGB}-->'); 45 } else { 46 $('#stock_' + index) 47 .attr('readonly', false) 48 .css('background-color', ''); 49 } 50 }); 51 }); 52 //]]> 53 </script> 24 54 <h2>商品規格登録</h2> 25 55 <form name="form1" id="form1" method="post" action="" enctype="multipart/form-data"> 26 56 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 27 <!--{ foreach key=key item=item from=$arrSearchHidden}-->28 <input type="hidden" name="<!--{$ key}-->" value="<!--{$item|h}-->" />29 <!--{ /foreach}-->57 <!--{* foreach key=name item=item from=$arrSearchHidden *}--> 58 <input type="hidden" name="<!--{$name}-->" value="<!--{$item|h}-->" /> 59 <!--{* /foreach *}--> 30 60 <input type="hidden" name="mode" value="edit" /> 31 <input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->" /> 32 <input type="hidden" name="pageno" value="<!--{$tpl_pageno}-->" /> 61 <input type="hidden" name="product_id" value="<!--{$arrForm.product_id.value|h}-->" /> 33 62 <input type="hidden" name="down_key" value=""> 34 <!--{ foreach key=key item=item from=$arrHidden}-->35 <input type="hidden" name="<!--{$ key}-->" value="<!--{$item|h}-->" />36 <!--{ /foreach}-->63 <!--{* foreach key=name item=item from=$arrHidden *}--> 64 <input type="hidden" name="<!--{$name}-->" value="<!--{$item|h}-->" /> 65 <!--{* /foreach *}--> 37 66 <div id="products" class="contents-main"> 38 67 … … 40 69 <tr> 41 70 <th>商品名</th> 42 <td><!--{$arrForm.product_name |h}--></td>71 <td><!--{$arrForm.product_name.value|h}--></td> 43 72 </tr> 44 73 <tr> 45 74 <th>規格1<span class="attention">*</span></th> 46 75 <td> 47 <!--{if $arrErr.select_class_id1}--> 48 <span class="attention"><!--{$arrErr.select_class_id1}--></span> 76 <!--{assign var=key value="select_class_id1"}--> 77 <!--{if $arrErr[$key]}--> 78 <span class="attention"><!--{$arrErr[$key]}--></span> 49 79 <!--{/if}--> 50 <select name="select_class_id1"> 80 81 <select name="<!--{$key}-->"> 51 82 <option value="">選択してください</option> 52 <!--{html_options options=$arrClass selected=$arrForm .select_class_id1}-->83 <!--{html_options options=$arrClass selected=$arrForm[$key].value}--> 53 84 </select> 54 85 </td> … … 57 88 <th>規格2</th> 58 89 <td> 59 <!--{if $arrErr.select_class_id2}--> 60 <span class="attention"><!--{$arrErr.select_class_id2}--></span> 90 <!--{assign var=key value="select_class_id2"}--> 91 <!--{if $arrErr[$key]}--> 92 <span class="attention"><!--{$arrErr[$key]}--></span> 61 93 <!--{/if}--> 62 <select name=" select_class_id2">94 <select name="<!--{$key}-->"> 63 95 <option value="">選択してください</option> 64 <!--{html_options options=$arrClass selected=$arrForm .select_class_id2}-->96 <!--{html_options options=$arrClass selected=$arrForm[$key].value}--> 65 97 </select> 66 98 </td> … … 71 103 <li><a class="btn-action" href="javascript:;" onclick="fnChangeAction('<!--{$smarty.const.ADMIN_PRODUCTS_URLPATH}-->'); fnModeSubmit('search','',''); return false;" ><span class="btn-prev">検索結果へ戻る</span></a></li> 72 104 <li><a class="btn-action" href="javascript:;" onclick="fnModeSubmit('disp','',''); return false;"><span class="btn-next">表示する</span></a></li> 73 <!--{if count($arrClassCat)> 0}-->105 <!--{if $arrForm.total.value > 0}--> 74 106 <li><a class="btn-action" href="javascript:;" onclick="fnModeSubmit('delete','',''); return false;"><span class="btn-next">削除する</span></a></li> 75 107 <!--{/if}--> … … 77 109 </div> 78 110 79 <!--{if count($arrClassCat)> 0}-->111 <!--{if $arrForm.total.value > 0}--> 80 112 81 113 <!--{foreach item=item name=i from=$arrClassCat}--> … … 90 122 </div> 91 123 92 <!--{assign var=class_id1 value=$arrForm.class_id1}--> 93 <!--{assign var=class_id2 value=$arrForm.class_id2}--> 94 <input type="hidden" name="class_id1" value="<!--{$class_id1}-->" /> 95 <input type="hidden" name="class_id2" value="<!--{$class_id2}-->" /> 124 <!--{assign var=key1 value="class_id1"}--> 125 <!--{assign var=key2 value="class_id2"}--> 126 <!--{assign var=class_id1 value=$arrForm[$key1].value|h}--> 127 <!--{assign var=class_id2 value=$arrForm[$key2].value|h}--> 128 <input type="hidden" name="<!--{$key1}-->" value="<!--{$class_id1}-->" /> 129 <input type="hidden" name="<!--{$key2}-->" value="<!--{$class_id2}-->" /> 96 130 <table class="list" width="900"> 97 131 <colgroup width="5%"> … … 108 142 <tr> 109 143 <th><input type="checkbox" onclick="fnAllCheck(this, 'input[name^=check]')" id="allCheck" /> <label for="allCheck"><br>登録</label></th> 110 <th>規格1<br>(<!--{$arrClass[$class_id1]|default:"未選択" }-->)</th>111 <th>規格2<br>(<!--{$arrClass[$class_id2]|default:"未選択" }-->)</th>144 <th>規格1<br>(<!--{$arrClass[$class_id1]|default:"未選択"|h}-->)</th> 145 <th>規格2<br>(<!--{$arrClass[$class_id2]|default:"未選択"|h}-->)</th> 112 146 <th>商品コード</th> 113 147 <th>在庫数<span class="attention">*</span></th> … … 118 152 <th>ダウンロード商品用<br>ファイル</th> 119 153 </tr> 120 <!--{section name=cnt loop=$arrClassCat}--> 154 <!--{section name=cnt loop=$arrForm.total.value}--> 155 <!--{assign var=index value=$smarty.section.cnt.index}--> 156 157 <!--{* TODO *}--> 121 158 <!--{assign var=key value="error:`$smarty.section.cnt.iteration`"}--> 122 159 <!--{if $arrErr[$key] != ""}--> … … 126 163 <!--{/if}--> 127 164 <tr > 128 <!--{assign var=key value="check:`$smarty.section.cnt.iteration`"}--> 165 129 166 <td class="center" > 130 <!--{assign var=id value="product_class_id:`$smarty.section.cnt.iteration`"}--> 131 <input type="hidden" name="classcategory_id1:<!--{$smarty.section.cnt.iteration}-->" value="<!--{$arrClassCat[cnt].classcategory_id1}-->" /> 132 <input type="hidden" name="classcategory_id2:<!--{$smarty.section.cnt.iteration}-->" value="<!--{$arrClassCat[cnt].classcategory_id2}-->" /> 133 <input type="hidden" name="name1:<!--{$smarty.section.cnt.iteration}-->" value="<!--{$arrClassCat[cnt].name1}-->" /> 134 <input type="hidden" name="name2:<!--{$smarty.section.cnt.iteration}-->" value="<!--{$arrClassCat[cnt].name2}-->" /> 135 <input type="hidden" name="product_class_id:<!--{$smarty.section.cnt.iteration}-->" value="<!--{$arrForm[$id]}-->" /> 136 <input type="checkbox" name="check:<!--{$smarty.section.cnt.iteration}-->" value="1" <!--{if $arrForm[$key] == 1}-->checked="checked"<!--{/if}-->> 137 </td> 138 <td class="center"><!--{$arrClassCat[cnt].name1}--></td> 139 <td class="center"><!--{$arrClassCat[cnt].name2}--></td> 140 <!--{assign var=key value="product_code:`$smarty.section.cnt.iteration`"}--> 141 <td class="center"><input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key]}-->" size="6" class="box6" maxlength="<!--{$smarty.const.STEXT_LEN}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}-->></td> 142 <!--{assign var=key value="stock:`$smarty.section.cnt.iteration`"}--> 143 <!--{assign var=chkkey value="stock_unlimited:`$smarty.section.cnt.iteration`"}--> 144 <td class="center"> 145 <input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key]}-->" size="6" class="box6" maxlength="<!--{$smarty.const.AMOUNT_LEN}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}-->> 146 <!--{assign var=key value="stock_unlimited:`$smarty.section.cnt.iteration`"}--><br /> 147 <input type="checkbox" name="<!--{$key}-->" value="1" <!--{if $arrForm[$key] == "1"}-->checked<!--{/if}--> onClick="fnCheckStockNoLimit('<!--{$smarty.section.cnt.iteration}-->','<!--{$smarty.const.DISABLED_RGB}-->');"/>無制限 148 </td> 149 <!--{assign var=key value="price01:`$smarty.section.cnt.iteration`"}--> 150 <td class="center"><input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key]}-->" size="6" class="box6" maxlength="<!--{$smarty.const.PRICE_LEN}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}-->></td> 151 <!--{assign var=key value="price02:`$smarty.section.cnt.iteration`"}--> 152 <td class="center"><input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key]}-->" size="6" class="box6" maxlength="<!--{$smarty.const.PRICE_LEN}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}-->></td> 167 <!--{assign var=key value="classcategory_id1"}--> 168 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" /> 169 <!--{assign var=key value="classcategory_id2"}--> 170 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" /> 171 <!--{assign var=key value="product_class_id"}--> 172 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" /> 173 <!--{assign var=key value="check"}--> 174 <input type="checkbox" name="<!--{$key}-->[<!--{$index}-->]" value="1" <!--{if $arrForm[$key].value[$index] == 1}-->checked="checked"<!--{/if}--> /> 175 </td> 176 <td class="center"> 177 <!--{assign var=key value="classcategory_name1"}--> 178 <!--{$arrForm[$key].value[$index]|h}--> 179 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" /> 180 </td> 181 <td class="center"> 182 <!--{assign var=key value="classcategory_name2"}--> 183 <!--{$arrForm[$key].value[$index]|h}--> 184 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" /> 185 </td> 186 <td class="center"> 187 <!--{assign var=key value="product_code"}--> 188 <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> /> 189 </td> 190 <td class="center"> 191 <!--{assign var=key value="stock"}--> 192 <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> id="<!--{$key}-->_<!--{$index}-->" /> 193 <!--{assign var=key value="stock_unlimited"}--><br /> 194 <input type="checkbox" name="<!--{$key}-->[<!--{$index}-->]" value="1" <!--{if $arrForm[$key].value[$index] == "1"}-->checked="checked"<!--{/if}--> onClick="fnCheckStockNoLimit('<!--{$index}-->','<!--{$smarty.const.DISABLED_RGB}-->');" id="<!--{$key}-->_<!--{$index}-->" /><label for="<!--{$key}-->_<!--{$index}-->">無制限</label> 195 </td> 196 <td class="center"> 197 <!--{assign var=key value="price01"}--> 198 <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> /> 199 </td> 200 <td class="center"> 201 <!--{assign var=key value="price02"}--> 202 <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" <!--{if $arrErr[$key] != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> /> 203 </td> 153 204 <td class="class-product-type"> 154 <!--{assign var=key value="product_type_id :`$smarty.section.cnt.iteration`"}-->155 <!--{html_radios name= $key options=$arrProductType selected=$arrForm[$key]separator='<br />'}-->156 </td> 157 <td class="center"> 158 <!--{assign var=key value="down_filename :`$smarty.section.cnt.iteration`"}-->205 <!--{assign var=key value="product_type_id"}--> 206 <!--{html_radios name="`$key`[`$index`]" options=$arrProductType selected=$arrForm[$key].value[$index]|h separator='<br />'}--> 207 </td> 208 <td class="center"> 209 <!--{assign var=key value="down_filename}--> 159 210 <span class="attention"><!--{$arrErr[$key]}--></span> 160 <input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key]|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr[$key] != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" size="10" /> 161 </td> 162 <!--{assign var=key value="down_realfilename:`$smarty.section.cnt.iteration`"}--> 163 <td><span class="attention"><!--{$arrErr[$key]}--></span> 164 <!--{if $arrForm[$key] != ""}--> 165 <!--{$arrForm[$key]|h}--><input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key]|h}-->"> 166 <a href="" onclick="fnFormModeSubmit('form1', 'delete_down', 'down_key', '<!--{$key}-->'); return false;">[ファイルの取り消し]</a><br> 211 <input type="text" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{if $arrErr[$key] != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" size="10" /> 212 </td> 213 <td> 214 <!--{assign var=key value="down_realfilename"}--> 215 <span class="attention"><!--{$arrErr[$key]}--></span> 216 <!--{if $arrForm[$key].value[$index] != ""}--> 217 <!--{$arrForm[$key].value[$index]|h}--> 218 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" /> 219 <a href="?" onclick="fnFormModeSubmit('form1', 'delete_down', 'down_key[<!--{$index}-->]', '<!--{$key}-->'); return false;">[ファイルの取り消し]</a><br /> 167 220 <!--{/if}--> 168 <input type="file" name="<!--{$key}--> " size="10" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" /><br />169 <a class="btn-normal" href="javascript:;" name="btn" onclick="fnFormModeSubmit('form1', 'upload_down', 'down_key', '<!--{$key}--> '); return false;">アップロード</a>221 <input type="file" name="<!--{$key}-->[<!--{$index}-->]" size="10" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" /><br /> 222 <a class="btn-normal" href="javascript:;" name="btn" onclick="fnFormModeSubmit('form1', 'upload_down', 'down_key', '<!--{$key}-->[<!--{$index}-->]'); return false;">アップロード</a> 170 223 </td> 171 224 </tr> -
branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class_confirm.tpl
r20514 r20595 24 24 <h2>確認</h2> 25 25 <form name="form1" id="form1" method="post" action="?" enctype="multipart/form-data"> 26 <input type="hidden" name="mode" value="" /> 26 27 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 27 <!--{foreach key=key item=item from=$arrForm}--> 28 <input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" /> 28 <!--{foreach key=key item=items from=$arrForm}--> 29 <!--{if is_array($items.value)}--> 30 <!--{foreach key=index item=item from=$items.value}--> 31 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$item|h}-->" /> 32 <!--{/foreach}--> 33 <!--{else}--> 34 <input type="hidden" name="<!--{$key}-->" value="<!--{$items.value|h}-->" /> 35 <!--{/if}--> 29 36 <!--{/foreach}--> 30 37 31 <!--{foreach key=key item=item from=$arrHidden}--> 32 <input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" /> 38 <!--{* TODO 不要? *}--> 39 <!--{foreach key=key item=items from=$arrSearchHidden}--> 40 <!--{if is_array($items.value)}--> 41 <!--{foreach key=index item=item from=$items.value}--> 42 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$item|h}-->" /> 43 <!--{/foreach}--> 44 <!--{else}--> 45 <input type="hidden" name="<!--{$key}-->" value="<!--{$items|h}-->" /> 46 <!--{/if}--> 33 47 <!--{/foreach}--> 48 34 49 <div id="products" class="contents-main"> 35 50 36 <!--{if $tpl_check > 0}--> 51 <!--{if count($arrForm.check.value) > 0}--> 52 <!--{assign var=key1 value="class_id1"}--> 53 <!--{assign var=key2 value="class_id2"}--> 54 <!--{assign var=class_id1 value=$arrForm[$key1].value|h}--> 55 <!--{assign var=class_id2 value=$arrForm[$key2].value|h}--> 37 56 <table class="list"> 38 <!--{assign var=class_id1 value=$arrForm.class_id1}--> 39 <!--{assign var=class_id2 value=$arrForm.class_id2}--> 40 <tr> 41 <th>規格1(<!--{$arrClass[$class_id1]|default:"未選択"}-->)</th> 42 <th>規格2(<!--{$arrClass[$class_id2]|default:"未選択"}-->)</th> 57 <tr> 58 <th>規格1(<!--{$arrClass[$class_id1]|default:"未選択"|h}-->)</th> 59 <th>規格2(<!--{$arrClass[$class_id2]|default:"未選択"|h}-->)</th> 43 60 <th>商品コード</th> 44 61 <th>在庫数</th> … … 49 66 <th>ダウンロード商品用ファイルアップロード</th> 50 67 </tr> 51 <!--{section name=cnt loop=$tpl_count}--> 52 <!--{assign var=key value="check:`$smarty.section.cnt.iteration`"}--> 53 <!--{if $arrForm[$key] == 1}--> 68 <!--{section name=cnt loop=$arrForm.total.value}--> 69 <!--{assign var=index value=$smarty.section.cnt.index}--> 70 71 <!--{if $arrForm.check.value[$index] == 1}--> 54 72 <tr> 55 <!--{assign var=key value=" name1:`$smarty.section.cnt.iteration`"}-->56 <td><!--{$arrForm[$key] }--></td>57 <!--{assign var=key value=" name2:`$smarty.section.cnt.iteration`"}-->58 <td><!--{$arrForm[$key] }--></td>59 <!--{assign var=key value="product_code :`$smarty.section.cnt.iteration`"}-->60 <td><!--{$arrForm[$key] }--></td>61 <!--{assign var=key1 value="stock :`$smarty.section.cnt.iteration`"}-->62 <!--{assign var=key2 value="stock_unlimited :`$smarty.section.cnt.iteration`"}-->73 <!--{assign var=key value="classcategory_name1"}--> 74 <td><!--{$arrForm[$key].value[$index]|h}--></td> 75 <!--{assign var=key value="classcategory_name2"}--> 76 <td><!--{$arrForm[$key].value[$index]|h}--></td> 77 <!--{assign var=key value="product_code"}--> 78 <td><!--{$arrForm[$key].value[$index]|h}--></td> 79 <!--{assign var=key1 value="stock"}--> 80 <!--{assign var=key2 value="stock_unlimited"}--> 63 81 <td class="right"> 64 <!--{if $arrForm[$key2] == 1}-->82 <!--{if $arrForm[$key2].value[$index] == 1}--> 65 83 無制限 66 84 <!--{else}--> 67 <!--{$arrForm[$key1] }-->85 <!--{$arrForm[$key1].value[$index]|h}--> 68 86 <!--{/if}--> 69 87 </td> 70 <!--{assign var=key value="price01 :`$smarty.section.cnt.iteration`"}-->71 <td class="right"><!--{$arrForm[$key] }--></td>72 <!--{assign var=key value="price02 :`$smarty.section.cnt.iteration`"}-->73 <td class="right"><!--{$arrForm[$key] }--></td>74 <!--{assign var=key value="product_type_id :`$smarty.section.cnt.iteration`"}-->88 <!--{assign var=key value="price01"}--> 89 <td class="right"><!--{$arrForm[$key].value[$index]|h}--></td> 90 <!--{assign var=key value="price02"}--> 91 <td class="right"><!--{$arrForm[$key].value[$index]|h}--></td> 92 <!--{assign var=key value="product_type_id"}--> 75 93 <td class="right"> 76 <!--{foreach from=$arrForm[$key] item=product_type_id}-->94 <!--{foreach from=$arrForm[$key].value[$index] item=product_type_id}--> 77 95 <!--{$arrProductType[$product_type_id]|h}--> 78 96 <!--{/foreach}--> 79 97 </td> 80 <!--{assign var=key value="down_filename :`$smarty.section.cnt.iteration`"}-->81 <td class="right"><!--{$arrForm[$key] }--></td>82 <!--{assign var=key value="down_realfilename :`$smarty.section.cnt.iteration`"}-->83 <td class="right"><!--{$arrForm[$key] }--></td>98 <!--{assign var=key value="down_filename"}--> 99 <td class="right"><!--{$arrForm[$key].value[$index]}--></td> 100 <!--{assign var=key value="down_realfilename"}--> 101 <td class="right"><!--{$arrForm[$key].value[$index]}--></td> 84 102 </tr> 85 103 <!--{/if}--> … … 93 111 <ul> 94 112 <li><a class="btn-action" href="javascript:;" onclick="fnFormModeSubmit('form1', 'confirm_return','',''); return false"><span class="btn-prev">前へ戻る</span></a></li> 95 <!--{if $tpl_check> 0}-->96 <li><a class="btn-action" href="javascript:;" onclick=" document.form1.submit(); return false;"><span class="btn-next">この内容で登録する</span></a></li>113 <!--{if count($arrForm.check.value) > 0}--> 114 <li><a class="btn-action" href="javascript:;" onclick="fnFormModeSubmit('form1', 'complete','',''); return false;"><span class="btn-next">この内容で登録する</span></a></li> 97 115 <!--{/if}--> 98 116 </ul> -
branches/version-2_5-dev/data/class/SC_Product.php
r20538 r20595 178 178 function getDetail($productId) { 179 179 $objQuery =& SC_Query_Ex::getSingletonInstance(); 180 $result = $objQuery->select("*", $this->alldtlSQL("product_id = ? "),180 $result = $objQuery->select("*", $this->alldtlSQL("product_id = ? AND del_flg = 0"), 181 181 "product_id = ?", 182 182 array($productId, $productId)); … … 203 203 * 204 204 * @param array $arrProductId 商品ID の配列 205 * @param boolean $has_deleted 削除された商品規格も含む場合 true; 初期値 false 205 206 * @return void 206 207 */ 207 function setProductsClassByProductIds($arrProductId ) {208 function setProductsClassByProductIds($arrProductId, $has_deleted = false) { 208 209 209 210 $arrProductsClass = array(); 210 211 foreach ($arrProductId as $productId) { 211 $arrProductClass = $this->getProductsClassFullByProductId($productId );212 $arrProductClass = $this->getProductsClassFullByProductId($productId, $has_deleted); 212 213 213 214 $classCats1 = array(); … … 326 327 T2.level, 327 328 T3.name AS classcategory_name, 329 T3.rank, 328 330 T4.name AS class_name, 329 331 T4.class_id … … 338 340 ON T3.class_id = T4.class_id 339 341 __EOS__; 342 343 $objQuery->setOrder('T3.rank DESC'); // XXX 340 344 $arrRet = $objQuery->select($col, $table, "", $params); 341 345 $levels = array(); … … 358 362 T1.level, 359 363 T2.name AS classcategory_name, 364 T2.rank, 360 365 T3.name AS class_name, 361 366 T3.class_id … … 369 374 __EOS__; 370 375 376 $objQuery->setOrder('T2.rank DESC'); // XXX 371 377 $arrParents = $objQuery->select($col, $table, "", $parents); 372 378 373 unset($parents);374 379 foreach ($arrParents as $rows) { 375 380 $parents[] = $rows['parent_class_combination_id']; … … 396 401 $arrProductsClass[] = $val; 397 402 } 398 399 403 return $arrProductsClass; 400 404 } … … 402 406 /** 403 407 * 商品規格IDから商品規格を取得する. 408 * 409 * 削除された商品規格は取得しない. 410 * 411 * @param integer $productClassId 商品規格ID 412 * @return array 商品規格の配列 404 413 */ 405 414 function getProductsClass($productClassId) { 406 415 $objQuery =& SC_Query_Ex::getSingletonInstance(); 407 $objQuery->setWhere('product_class_id = ? ');416 $objQuery->setWhere('product_class_id = ? AND T1.del_flg = 0'); 408 417 $objQuery->setOrder("T2.level DESC"); 409 418 $results = $this->getProductsClassByQuery($objQuery, $productClassId); … … 416 425 * 417 426 * @param array $productIds 商品IDの配列 427 * @param boolean $has_deleted 削除された商品規格も含む場合 true; 初期値 false 418 428 * @return array 商品規格の配列 419 429 */ 420 function getProductsClassByProductIds($productIds = array() ) {430 function getProductsClassByProductIds($productIds = array(), $has_deleted = false) { 421 431 if (empty($productIds)) { 422 432 return array(); 423 433 } 424 434 $objQuery =& SC_Query_Ex::getSingletonInstance(); 425 $objQuery->setWhere('product_id IN (' . implode(', ', array_pad(array(), count($productIds), '?')) . ')'); 435 $where = 'product_id IN (' . implode(', ', array_pad(array(), count($productIds), '?')) . ')'; 436 if (!$has_deleted) { 437 $where .= ' AND T1.del_flg = 0'; 438 } 439 $objQuery->setWhere($where); 426 440 $objQuery->setOrder("T2.level DESC"); 427 441 return $this->getProductsClassByQuery($objQuery, $productIds); … … 443 457 * 444 458 * @param array $productId 商品ID 459 * @param boolean $has_deleted 削除された商品規格も含む場合 true; 初期値 false 445 460 * @return array すべての組み合わせの商品規格の配列 446 461 */ 447 function getProductsClassFullByProductId($productId ) {448 $results = $this->getProductsClassByProductIds(array($productId) );462 function getProductsClassFullByProductId($productId, $has_deleted = false) { 463 $results = $this->getProductsClassByProductIds(array($productId), $has_deleted); 449 464 return $this->getProductsClassFull($results); 450 465 } -
branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
r20541 r20595 1448 1448 1449 1449 $objQuery =& SC_Query_Ex::getSingletonInstance(); 1450 $where = 'product_id = ? AND class_combination_id IS NOT NULL';1450 $where = 'product_id = ? AND del_flg = 0 AND class_combination_id IS NOT NULL'; 1451 1451 $count = $objQuery->count('dtb_products_class', $where, array($product_id)); 1452 1452 -
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products.php
r20538 r20595 378 378 // 読み込む列とテーブルの指定 379 379 $col = "product_id, name, main_list_image, status, product_code_min, product_code_max, price02_min, price02_max, stock_min, stock_max, stock_unlimited_min, stock_unlimited_max, update_date"; 380 $from = $objProduct->alldtlSQL( );380 $from = $objProduct->alldtlSQL('del_flg = 0'); 381 381 382 382 $objQuery->setLimitOffset($limit, $offset); -
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php
r20562 r20595 162 162 163 163 $where = "del_flg <> 1 AND class_id = ?"; 164 $objQuery->setOrder("rank DESC"); 164 $objQuery->setOrder("rank DESC"); // XXX 降順 165 165 $arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($class_id)); 166 166 return $arrClassCat; -
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
r20538 r20595 56 56 $masterData = new SC_DB_MasterData_Ex(); 57 57 $this->arrProductType = $masterData->getMasterData("mtb_product_type"); 58 // 規格プルダウンのリスト 59 $this->arrClass = $this->getAllClass(); 58 60 } 59 61 … … 78 80 $this->initParam($objFormParam); 79 81 80 // 規格行のPOSTパラメータを初期化81 $count = $this->getRowMax($_POST);82 $this->initRowParam($count, $objFormParam);83 82 $objFormParam->setParam($_POST); 84 83 $objFormParam->convParam(); 85 84 86 85 $this->arrSearchHidden = $objFormParam->getSearchArray(); 87 88 $this->tpl_product_id = $objFormParam->getValue('product_id');89 $this->tpl_pageno = $objFormParam->getValue('pageno');90 86 91 87 // Downファイル管理クラスを初期化 … … 93 89 $this->initDownFile($count, $this->objDownFile); 94 90 95 $this->arrForm = $objFormParam->getHashArray();96 97 91 switch ($this->getMode()) { 98 92 … … 100 94 case 'edit': 101 95 // エラーチェック 102 $this->arrErr = $this->lfProductClassError($ this->arrForm);96 $this->arrErr = $this->lfProductClassError($objFormParam->getHashArray()); 103 97 if (empty($this->arrErr)){ 104 98 $this->tpl_mainpage = 'products/product_class_confirm.tpl'; 105 $this->lfProductConfirmPage($this->arrForm); // 確認ページ表示 99 $this->doDisp($objFormParam); 100 $objFormParam->setParam($_POST); 101 $objFormParam->convParam(); 102 106 103 } else { 107 104 $this->doPreEdit($objFormParam->getValue('product_id'), false ,true); 105 /* TODO 108 106 // Hiddenからのデータを引き継ぐ 109 107 $this->objDownFile->setHiddenFileList($_POST); … … 112 110 // Form用に配列を渡す。 113 111 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 114 $this->doDisp($objFormParam->getValue('product_id'), 115 $objFormParam->getValue('select_class_id1'), 116 $objFormParam->getValue('select_class_id2')); 112 */ 113 $this->doDisp($objFormParam); 114 $objFormParam->setParam($_POST); 115 $objFormParam->convParam(); 116 117 117 } 118 118 break; … … 125 125 // 初期表示 126 126 case 'pre_edit': 127 $this->doPreEdit($objFormParam->getValue('product_id')); 127 $this->doPreEdit($objFormParam); 128 /* TODO 128 129 // HIDDEN用に配列を渡す。 129 130 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList()); 131 */ 130 132 break; 131 133 132 134 // 「表示する」ボタン押下時 133 135 case 'disp': 134 $this->doDisp($objFormParam->getValue('product_id'), 135 $objFormParam->getValue('select_class_id1'), 136 $objFormParam->getValue('select_class_id2')); 136 $this->arrErr = $this->lfClassError(); 137 if (SC_Utils_Ex::isBlank($this->arrErr)) { 138 $this->doDisp($objFormParam); 139 } 137 140 break; 138 141 139 142 // ダウンロード商品ファイルアップロード 140 143 case 'upload_down': 144 /* TODO 141 145 $product_id = $objFormParam->getValue('product_id'); 142 146 $down_key = $objFormParam->getValue('down_key'); … … 156 160 $this->doDisp($product_id, 157 161 $objFormParam->getValue('select_class_id1'), 158 $objFormParam->getValue('select_class_id2')); 162 $objFormParam->getValue('select_class_id2'), $objFormParam); 163 */ 159 164 break; 160 165 161 166 // ダウンロードファイルの削除 162 167 case 'delete_down': 168 /* TODO 163 169 $product_id = $objFormParam->getValue('product_id'); 164 170 $down_key = $objFormParam->getValue('down_key'); … … 176 182 $this->doDisp($product_id, 177 183 $objFormParam->getValue('select_class_id1'), 178 $objFormParam->getValue('select_class_id2')); 184 $objFormParam->getValue('select_class_id2'), $objFormParam); 185 */ 179 186 break; 180 187 181 188 // 確認画面からの戻り 182 189 case 'confirm_return': 183 // 規格の選択情報は引き継がない。 184 $this->arrForm['select_class_id1'] = ""; 185 $this->arrForm['select_class_id2'] = ""; 186 $this->doPreEdit($objFormParam->getValue('product_id'), false, true); 190 $this->doPreEdit($objFormParam); 191 $objFormParam->setParam($_POST); 192 $objFormParam->convParam(); 193 194 /* TODO 187 195 // Hiddenからのデータを引き継ぐ 188 196 $this->objDownFile->setHiddenFileList($_POST); … … 191 199 // Form用に配列を渡す。 192 200 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 193 $this->doDisp($objFormParam->getValue('product_id'), 194 $objFormParam->getValue('select_class_id1'), 195 $objFormParam->getValue('select_class_id2')); 201 */ 202 196 203 break; 197 204 case 'complete': … … 203 210 // 商品規格の登録 204 211 $arrList = $objFormParam->getHashArray(); 205 $this->registerProductClass($arrList, $objFormParam->getValue('product_id')); 212 $this->registerProductClass($arrList, $objFormParam->getValue('product_id'), 213 $objFormParam->getValue('total')); 206 214 // 一時ファイルを本番ディレクトリに移動する 207 215 $this->objDownFile->moveTempDownFile(); … … 211 219 } 212 220 213 // 規格プルダウンのリストを取得214 $this->arrClass = $this->getAllClass();215 221 // 登録対象の商品名を取得 216 $this->arrForm['product_name'] = $this->getProductName($objFormParam->getValue('product_id')); 222 $objFormParam->setValue('product_name', 223 $this->getProductName($objFormParam->getValue('product_id'))); 224 $this->arrForm = $objFormParam->getFormParamList(); 217 225 } 218 226 … … 228 236 * パラメータ初期化 229 237 * 230 * @param <type> $objFormParam 238 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 239 * @return void 231 240 */ 232 241 function initParam(&$objFormParam) { 233 $objFormParam->addParam();234 242 // 商品マスタ検索パラメータ引き継ぎ 235 243 $objFormParam->addParam("商品ID", "product_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); … … 251 259 252 260 // 規格プルダウン 253 $objFormParam->addParam("規格1", "select_class_id1", null, null, array()); 254 $objFormParam->addParam("規格2", "select_class_id2", null, null, array()); 255 $objFormParam->addParam("規格1", "class_id1", null, null, array()); 256 $objFormParam->addParam("規格2", "class_id2", null, null, array()); 257 258 // ファイルアップロード用 259 $objFormParam->addParam("ファイルアップロード用キー", "down_key", null, null, array()); 260 } 261 262 /** 263 * 規格行ごとのパラメータを初期化する 264 * 265 * @param 行数 $count 266 * @param SC_FormParam $objFormParam 267 */ 268 function initRowParam($count, &$objFormParam) { 269 for ($i = 1; $i < $count; $i++) { 270 $objFormParam->addParam("規格ID1", "classcategory_id1:$i", null, null, array()); 271 $objFormParam->addParam("規格ID2", "classcategory_id2:$i", null, null, array()); 272 $objFormParam->addParam("規格名", "name1:$i", null, null, array()); 273 $objFormParam->addParam("企画名", "name2:$i", null, null, array()); 274 $objFormParam->addParam("product_class_id", "product_class_id:$i", null, null, array()); 275 $objFormParam->addParam("商品コード", "product_code:$i", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 276 $objFormParam->addParam("在庫数", "stock:$i", AMOUNT_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 277 $objFormParam->addParam("在庫数", "stock_unlimited:$i", null, null, array()); 278 $objFormParam->addParam(NORMAL_PRICE_TITLE, "price01:$i", PRICE_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); 279 $objFormParam->addParam(SALE_PRICE_TITLE, "price02:$i", PRICE_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 280 $objFormParam->addParam("商品種別", "product_type_id:$i", null, null, array()); 281 $objFormParam->addParam("DLファイル名", "down_filename:$i", null, null, array()); 282 $objFormParam->addParam("DLファイル名", "down_realfilename:$i", null, null, array()); 283 $objFormParam->addParam("チェックボックス", "check:$i", null, null, array()); 284 } 261 $objFormParam->addParam("規格1", "select_class_id1", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 262 $objFormParam->addParam("規格2", "select_class_id2", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 263 $objFormParam->addParam("規格1", "class_id1", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 264 $objFormParam->addParam("規格2", "class_id2", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 265 266 // 商品規格 267 $objFormParam->addParam("商品規格数", "total", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 268 $objFormParam->addParam("商品名", "product_name", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 269 $objFormParam->addParam("商品コード", "product_code", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 270 $objFormParam->addParam("規格ID1", "classcategory_id1", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 271 $objFormParam->addParam("規格ID2", "classcategory_id2", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 272 $objFormParam->addParam("規格名1", "classcategory_name1", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 273 $objFormParam->addParam("規格名2", "classcategory_name2", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 274 $objFormParam->addParam("商品規格ID", "product_class_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 275 $objFormParam->addParam("在庫数", "stock", AMOUNT_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 276 $objFormParam->addParam("在庫数", "stock_unlimited", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 277 $objFormParam->addParam(NORMAL_PRICE_TITLE, "price01", PRICE_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); 278 $objFormParam->addParam(SALE_PRICE_TITLE, "price02", PRICE_LEN, 'n', array("EXIST_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); 279 $objFormParam->addParam("商品種別", "product_type_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 280 $objFormParam->addParam("削除フラグ", "del_flg", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 281 $objFormParam->addParam("DLファイル名", "down_filename", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 282 $objFormParam->addParam("DLファイル名", "down_realfilename", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 283 $objFormParam->addParam("チェックボックス", "check", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 284 $objFormParam->addParam("ファイルアップロード用キー", "down_key", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 285 285 } 286 286 … … 299 299 300 300 /** 301 * 規格行の最大値を返す302 *303 * @param array $arrPost POSTパラメータ304 * @return int 規格行の最大値305 */306 function getRowMax($arrPost) {307 $i = 1;308 foreach ($arrPost as $key => $value) {309 if ($key == "classcategory_id1:$i") {310 $i++;311 }312 }313 return $i;314 }315 316 /**317 301 * 規格の登録または更新を行う. 318 302 * … … 323 307 * @param integer $product_id 登録を行う商品ID 324 308 */ 325 function registerProductClass($arrList, $product_id ) {309 function registerProductClass($arrList, $product_id, $total) { 326 310 $objQuery =& SC_Query_Ex::getSingletonInstance(); 327 311 $objDb = new SC_Helper_DB_Ex(); … … 329 313 $objQuery->begin(); 330 314 331 $productsClass = $objQuery->select("*", "dtb_products_class", "product_id = ?", array($product_id)); 332 333 $exists = array(); 334 foreach ($productsClass as $val) { 335 $exists[$val['product_class_id']] = $val; 336 } 337 $i = 1; 338 while (!SC_Utils_Ex::isBlank($arrList['check:' . $i])) { 339 $pVal = array(); 340 $pVal['product_id'] = $product_id;; 341 $pVal['product_code'] = $arrList["product_code:".$i]; 342 $pVal['stock'] = $arrList["stock:".$i]; 343 $pVal['stock_unlimited'] = ($arrList["stock_unlimited:".$i]) ? '1' : '0'; 344 $pVal['price01'] = $arrList['price01:'.$i]; 345 $pVal['price02'] = $arrList['price02:'.$i]; 346 $pVal['product_type_id'] = $arrList['product_type_id:'.$i]; 347 $pVal['down_filename'] = $arrList['down_filename:'.$i]; 348 $pVal['down_realfilename'] = $arrList['down_realfilename:'.$i]; 349 $pVal['creator_id'] = $_SESSION['member_id']; 350 $pVal['update_date'] = "now()"; 351 352 if($arrList["check:".$i] == 1) { 353 $pVal['del_flg'] = 0; 354 } else { 355 $pVal['del_flg'] = 1; 356 } 357 358 // 更新 or 登録 359 $isUpdate = false; 360 if (!SC_Utils_Ex::isBlank($arrList["product_class_id:".$i])) { 361 $isUpdate = true; 315 $arrProductsClass = $objQuery->select("*", "dtb_products_class", "product_id = ?", array($product_id)); 316 $arrExists = array(); 317 foreach ($arrProductsClass as $val) { 318 $arrExists[$val['product_class_id']] = $val; 319 } 320 321 // デフォルト値として設定する値を取得しておく 322 $arrDefault = $this->getProductsClass($product_id); 323 324 for ($i = 0; $i < $total; $i++) { 325 $del_flg = SC_Utils_Ex::isBlank($arrList['check'][$i]) ? 1 : 0; 326 $stock_unlimited = SC_Utils_Ex::isBlank($arrList['stock_unlimited'][$i]) ? 0 : 1; 327 328 // dtb_products_class 登録/更新用 329 $registerKeys = array('product_code', 'stock', 330 'price01', 'price02', 'product_type_id', 331 'down_filename', 'down_realfilename'); 332 333 $arrPC = array(); 334 foreach ($registerKeys as $key) { 335 $arrPC[$key] = $arrList[$key][$i]; 336 } 337 $arrPC['product_id'] = $product_id; 338 $arrPC['sale_limit'] = $arrDefault['sale_limit']; 339 $arrPC['deliv_fee'] = $arrDefault['deliv_fee']; 340 $arrPC['point_rate'] = $arrDefault['point_rate']; 341 $arrPC['stock_unlimited'] = $stock_unlimited; 342 343 // 該当関数が無いため, セッションの値を直接代入 344 $arrPC['creator_id'] = $_SESSION['member_id']; 345 $arrPC['update_date'] = 'now()'; 346 $arrPC['del_flg'] = $del_flg; 347 348 // 登録 or 更新 349 $is_update = false; 350 if (!SC_Utils_Ex::isBlank($arrList['product_class_id'][$i])) { 351 $is_update = true; 352 362 353 // 更新の場合は規格組み合わせを検索し, 削除しておく 363 $class_combination_id = $ exists[$arrList["product_class_id:".$i]]['class_combination_id'];354 $class_combination_id = $arrExists[$arrList['product_class_id'][$i]]['class_combination_id']; 364 355 $existsCombi = $objQuery->getRow( 365 "*", 366 "dtb_class_combination", 367 "class_combination_id = ?", 368 array($class_combination_id) 369 ); 370 371 $objQuery->delete("dtb_class_combination", 372 "class_combination_id IN (?, ?)", 356 '*', 357 'dtb_class_combination', 358 'class_combination_id = ?', 359 array($class_combination_id)); 360 361 $objQuery->delete('dtb_class_combination', 362 'class_combination_id IN (?, ?)', 373 363 array($existsCombi['class_combination_id'], 374 364 $existsCombi['parent_class_combination_id'])); … … 376 366 377 367 // 規格組み合わせを登録 378 $cVal1['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id'); 379 380 $cVal1['classcategory_id'] = $arrList["classcategory_id1:".$i]; 381 $cVal1['level'] = 1; 382 $objQuery->insert("dtb_class_combination", $cVal1); 383 384 $pVal['class_combination_id'] = $cVal1['class_combination_id']; 368 $arrComb1['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id'); 369 $arrComb1['classcategory_id'] = $arrList['classcategory_id1'][$i]; 370 $arrComb1['level'] = 1; 371 $objQuery->insert('dtb_class_combination', $arrComb1); 385 372 386 373 // 規格2も登録する場合 387 if (!SC_Utils_Ex::isBlank($arrList["classcategory_id2:".$i])) { 388 $cVal2['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id'); 389 $cVal2['classcategory_id'] = $arrList["classcategory_id2:".$i]; 390 $cVal2['parent_class_combination_id'] = $cVal1['class_combination_id']; 391 $cVal2['level'] = 2; 392 $objQuery->insert("dtb_class_combination", $cVal2); 393 394 $pVal['class_combination_id'] = $cVal2['class_combination_id']; 374 if (!SC_Utils_Ex::isBlank($arrList['classcategory_id2'][$i])) { 375 $arrComb2['class_combination_id'] = $objQuery->nextVal('dtb_class_combination_class_combination_id'); 376 $arrComb2['classcategory_id'] = $arrList['classcategory_id2'][$i]; 377 $arrComb2['parent_class_combination_id'] = $arrComb1['class_combination_id']; 378 $arrComb2['level'] = 2; 379 $objQuery->insert('dtb_class_combination', $arrComb2); 380 381 $arrPC['class_combination_id'] = $arrComb2['class_combination_id']; 382 } else { 383 $arrPC['class_combination_id'] = $arrComb1['class_combination_id']; 395 384 } 396 385 397 386 // 更新 398 if ($is Update) {399 $ pVal['product_class_id'] = $arrList["product_class_id:".$i];400 $objQuery->update("dtb_products_class", $ pVal,387 if ($is_update) { 388 $arrPC['product_class_id'] = $arrList['product_class_id'][$i]; 389 $objQuery->update("dtb_products_class", $arrPC, 401 390 "product_class_id = ?", 402 array($ pVal['product_class_id']));391 array($arrPC['product_class_id'])); 403 392 } 404 393 // 新規登録 405 394 else { 406 $pVal['create_date'] = "now()"; 407 $pVal['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id'); 408 $objQuery->insert("dtb_products_class", $pVal); 409 } 410 411 $i++; 395 $arrPC['create_date'] = "now()"; 396 $arrPC['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id'); 397 $objQuery->insert("dtb_products_class", $arrPC); 398 } 412 399 } 413 400 414 401 // 規格無し用の商品規格を非表示に 415 $ bVal['del_flg'] = 1;416 $ bVal['update_date'] = 'now()';417 $objQuery->update("dtb_products_class", $ bVal,418 "product_ class_id = ? AND class_combination_id IS NULL",419 array($p Val['product_class_id']));402 $arrBlank['del_flg'] = 1; 403 $arrBlank['update_date'] = 'now()'; 404 $objQuery->update("dtb_products_class", $arrBlank, 405 "product_id = ? AND class_combination_id IS NULL", 406 array($product_id)); 420 407 421 408 // 件数カウントバッチ実行 … … 491 478 492 479 /** 493 * 確認ページを表示する494 *495 */496 function lfProductConfirmPage($arrPost) {497 $objDb = new SC_Helper_DB_Ex();498 $this->arrForm['mode'] = 'complete';499 $this->arrClass = $objDb->sfGetIDValueList("dtb_class", 'class_id', 'name');500 $cnt = 0;501 $check = 0;502 $no = 1;503 while ($arrPost["classcategory_id1:".$no] != "") {504 if ($arrPost["check:".$no] != "") {505 $check++;506 }507 $no++;508 $cnt++;509 }510 $this->tpl_check = $check;511 $this->tpl_count = $cnt;512 }513 514 /**515 480 * 規格の組み合わせ一覧を表示する. 516 481 * 517 * 1. 規格1, 規格2を組み合わせた場合の妥当性を検証する. 518 * 2. 規格1, 規格2における規格分類のすべての組み合わせを取得し, 519 * 該当商品の商品規格の内容を取得し, フォームに設定する. 520 */ 521 function doDisp($product_id, $select_class_id1, $select_class_id2) { 522 $this->arrForm['select_class_id1'] = $select_class_id1; 523 $this->arrForm['select_class_id2'] = $select_class_id2; 524 $dispError = $this->lfClassError(); 525 if (SC_Utils_Ex::isBlank($dispError)) { 526 $this->arrClassCat = $this->getAllClassCategory($select_class_id1, $select_class_id2); 527 $productsClass = $this->getProductsClass($product_id); 528 529 $total = count($this->arrClassCat); 530 for ($i = 1; $i <= $total; $i++) { 531 foreach ($productsClass as $key => $val) { 532 $this->arrForm[$key . ":" . $i] = $val; 533 } 534 } 535 } 536 $this->arrErr = array_merge((array) $this->arrErr, $dispError); 537 $this->tpl_onload.= "fnCheckAllStockLimit('$total', '" . DISABLED_RGB . "');"; 482 * 規格1, 規格2における規格分類のすべての組み合わせを取得し, 483 * 該当商品の商品規格の内容を取得後, フォームに設定する. 484 * 485 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 486 * @return void 487 */ 488 function doDisp(&$objFormParam) { 489 $product_id = $objFormParam->getValue('product_id'); 490 $select_class_id1 = $objFormParam->getValue('select_class_id1'); 491 $select_class_id2 = $objFormParam->getValue('select_class_id2'); 492 493 // すべての組み合わせを取得し, フォームに設定 494 $arrClassCat = $this->getAllClassCategory($select_class_id1, $select_class_id2); 495 $total = count($arrClassCat); 496 $objFormParam->setValue('total', $total); 497 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrClassCat)); 498 499 // class_id1, class_id2 は select_class_id1 で上書き 500 $objFormParam->setValue('class_id1', $select_class_id1); 501 $objFormParam->setValue('class_id2', $select_class_id2); 502 503 // 商品情報を取得し, フォームに設定 504 $arrProductsClass = $this->getProductsClass($product_id); 505 506 foreach ($arrProductsClass as $key => $val) { 507 // 組み合わせ数分の値の配列を生成する 508 $arrValues = array(); 509 for ($i = 0; $i < $total; $i++) { 510 $arrValues[] = $val; 511 } 512 $objFormParam->setValue($key, $arrValues); 513 } 538 514 } 539 515 … … 545 521 * @param bool $usepostValue 546 522 */ 547 function doPreEdit($product_id, $existsValue = true, $usepostValue = false) { 523 function doPreEdit(&$objFormParam) { 524 $product_id = $objFormParam->getValue('product_id'); 548 525 $existsProductsClass = $this->getProductsClassAndClasscategory($product_id); 549 $productsClass = $this->getProductsClass($product_id); 550 $this->arrForm["class_id1"] = $existsProductsClass[0]['class_id1']; 551 $this->arrForm["class_id2"] = $existsProductsClass[0]['class_id2']; 552 $this->arrForm['select_class_id1'] = $this->arrForm["class_id1"]; 553 $this->arrForm['select_class_id2'] = $this->arrForm["class_id2"]; 554 $this->arrClassCat = $this->getAllClassCategory($this->arrForm["class_id1"], $this->arrForm["class_id2"]); 555 556 $total = count($this->arrClassCat); 557 $line = ''; 558 559 for ($i = 0; $i < $total; $i++) { 560 $no = $i + 1; 561 if ($existsValue) { 562 foreach ($productsClass as $key => $val) { 563 if(!$usepostValue){ 564 $this->arrForm[$key . ":" . $no] = $val; 565 } 566 } 567 } 568 foreach ($existsProductsClass[$i] as $key => $val) { 569 if (!$usepostValue) { 570 $this->arrForm[$key . ":" . $no] = $val; 571 } 572 switch ($key) { 573 case 'down': 574 $this->objDownFile->addFile("ダウンロード販売用ファイル". ":" . $no, 'down_realfilename'. ":" . $no, explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0); 575 break; 576 default: 577 } 578 } 579 if (!SC_Utils_Ex::isBlank($this->arrForm['product_id:' . $no]) 580 && $this->arrForm["del_flg:" . $no] == 0) { 581 $line .= "'check:" . $no . "',"; 582 } 583 } 584 585 $line = preg_replace("/,$/", "", $line); 586 $this->tpl_javascript = "list = new Array($line);"; 587 $color = DISABLED_RGB; 588 $this->tpl_onload.= "fnListCheck(list); fnCheckAllStockLimit('$total', '$color');"; 526 527 $class_id1 = $existsProductsClass[0]['class_id1']; 528 $class_id2 = $existsProductsClass[0]['class_id2']; 529 $objFormParam->setValue('class_id1', $class_id1); 530 $objFormParam->setValue('class_id2', $class_id2); 531 $objFormParam->setValue('select_class_id1', $class_id1); 532 $objFormParam->setValue('select_class_id2', $class_id2); 533 $this->doDisp($objFormParam); 534 535 // 登録済みのデータで上書き 536 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($existsProductsClass)); 537 538 // $existsProductsClass で product_id が配列になってしまうため数値で上書き 539 $objFormParam->setValue('product_id', $product_id); 540 541 // check を設定 542 $arrChecks = array(); 543 $index = 0; 544 foreach ($objFormParam->getValue('del_flg') as $key => $val) { 545 if ($val == 0) { 546 $arrChecks[$index] = 1; 547 } 548 $index++; 549 } 550 $objFormParam->setValue('check', $arrChecks); 589 551 590 552 // DBデータからダウンロードファイル名の読込 … … 604 566 605 567 $objQuery->begin(); 606 607 $arrProductsClass = array(); 608 $arrProductsClass['del_flg'] = 0; 609 $objQuery->update("dtb_products_class", $arrProductsClass, "product_id = ? AND class_combination_id IS NULL", array($product_id)); 610 611 $arrProductsClass['del_flg'] = 1; 612 $objQuery->update("dtb_products_class", $arrProductsClass, "product_id = ? AND class_combination_id IS NOT NULL", array($product_id)); 613 568 $objQuery->update("dtb_products_class", array('del_flg' => 0), 569 "product_id = ? AND class_combination_id IS NULL", array($product_id)); 570 $objQuery->update("dtb_products_class", array('del_flg' => 1), 571 "product_id = ? AND class_combination_id IS NOT NULL", array($product_id)); 614 572 $objQuery->commit(); 615 573 … … 634 592 $col = "T1.class_id AS class_id1, " 635 593 . " T1.classcategory_id AS classcategory_id1, " 636 . " T1.name AS name1, "594 . " T1.name AS classcategory_name1, " 637 595 . " T1.rank AS rank1 "; 638 596 … … 648 606 . "T2.class_id AS class_id2," 649 607 . "T2.classcategory_id AS classcategory_id2," 650 . "T2.name AS name2,"608 . "T2.name AS classcategory_name2," 651 609 . "T2.rank AS rank2"; 652 610 $table = "dtb_classcategory AS T1, dtb_classcategory AS T2"; … … 667 625 function getProductName($product_id) { 668 626 $objQuery =& SC_Query_Ex::getSingletonInstance(); 669 return $objQuery->get One("SELECT name FROM dtb_products WHERE product_id = ?", array($product_id));627 return $objQuery->get('name', 'dtb_products', 'product_id = ?', array($product_id)); 670 628 } 671 629 … … 698 656 */ 699 657 function getAllClass() { 700 $objDb = new SC_Helper_DB_Ex(); 701 $arrClass = $objDb->sfGetIDValueList("dtb_class", 'class_id', 'name'); 658 $arrClass = SC_Helper_DB_Ex::sfGetIDValueList("dtb_class", 'class_id', 'name'); 702 659 703 660 // 規格分類が登録されていない規格は表示しないようにする。 … … 716 673 717 674 /** 718 * 商品IDをキーにして, 商品規格を取得する. 675 * 商品IDをキーにして, 商品規格の初期値を取得する. 676 * 677 * 商品IDをキーにし, デフォルトに設定されている商品規格を取得する. 719 678 * 720 679 * @param integer $product_id 商品ID … … 723 682 function getProductsClass($product_id) { 724 683 $objQuery =& SC_Query_Ex::getSingletonInstance(); 725 $col = "product_ id, product_code, price01, price02, stock, stock_unlimited, point_rate";726 return $objQuery->getRow($col, "dtb_products_class", "product_id = ? ", array($product_id));684 $col = "product_code, price01, price02, stock, stock_unlimited, sale_limit, deliv_fee, point_rate"; 685 return $objQuery->getRow($col, "dtb_products_class", "product_id = ? AND class_combination_id IS NULL", array($product_id)); 727 686 } 728 687 … … 735 694 function getProductsClassAndClasscategory($productId) { 736 695 $objProduct = new SC_Product_Ex(); 737 return $objProduct->getProductsClassFullByProductId($productId );696 return $objProduct->getProductsClassFullByProductId($productId, true); 738 697 } 739 698 } -
branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_List.php
r20567 r20595 298 298 $where = '0<>0'; 299 299 } 300 301 $where .= ' AND del_flg = 0'; // 商品規格の削除フラグ 300 302 $objQuery =& SC_Query_Ex::getSingletonInstance(); 301 303 $objQuery->setWhere($where); -
branches/version-2_5-dev/html/install/sql/insert_data.sql
r20592 r20595 611 611 INSERT INTO dtb_products (product_id, name, maker_id, status, comment1, comment2, comment3, comment4, comment5, comment6, note, main_list_comment, main_list_image, main_comment, main_image, main_large_image, sub_title1, sub_comment1, sub_image1, sub_large_image1, sub_title2, sub_comment2, sub_image2, sub_large_image2, sub_title3, sub_comment3, sub_image3, sub_large_image3, sub_title4, sub_comment4, sub_image4, sub_large_image4, sub_title5, sub_comment5, sub_image5, sub_large_image5, sub_title6, sub_comment6, sub_image6, sub_large_image6, del_flg, creator_id, create_date, update_date, deliv_date_id) VALUES (3, 'おなべレシピ', NULL, 1, NULL, NULL, '鍋,なべ,ナベ,レシピ,作り方', NULL, NULL, NULL, NULL, 'あの、秘伝のお鍋レシピです。', 'recipe130.jpg', '自分でチャレンジしてみたい方に。', 'recipe260.jpg', 'recipe500.jpg', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 1); 612 612 613 INSERT INTO dtb_products_class (product_class_id, product_id, class_combination_id, product_code, stock, stock_unlimited, sale_limit, price01, price02, deliv_fee, point_rate, creator_id, create_date, update_date, del_flg, product_type_id, down_filename, down_realfilename) VALUES(0, 1, NULL, 'ice-01', NULL, 1, NULL, 1000, 933, NULL, 10, 2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, 1, NULL, NULL); 613 614 INSERT INTO dtb_products_class (product_class_id, product_id, class_combination_id, product_code, stock, stock_unlimited, sale_limit, price01, price02, deliv_fee, point_rate, creator_id, create_date, update_date, del_flg, product_type_id, down_filename, down_realfilename) VALUES(1, 1, 10, 'ice-01', NULL, 1, NULL, 1000, 933, NULL, 10, 2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, 1, NULL, NULL); 614 615 INSERT INTO dtb_products_class (product_class_id, product_id, class_combination_id, product_code, stock, stock_unlimited, sale_limit, price01, price02, deliv_fee, point_rate, creator_id, create_date, update_date, del_flg, product_type_id, down_filename, down_realfilename) VALUES(2, 1, 11, 'ice-02', NULL, 1, NULL, 1000, 933, NULL, 10, 2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, 1, NULL, NULL); -
branches/version-2_5-dev/html/user_data/packages/admin/js/admin.js
r20566 r20595 243 243 } 244 244 245 // 在庫数制限判定246 function fnCheckStockNoLimit(no, icolor) {247 $check_key = "stock_unlimited:"+no;248 $input_key = "stock:"+no;249 250 list = new Array($input_key );251 if(document.form1[$check_key].checked) {252 fnChangeDisabled(list, icolor);253 document.form1[$input_key].value = "";254 } else {255 fnChangeDisabled(list, '');256 }257 }258 259 // 在庫数判定260 function fnCheckAllStockLimit(max, icolor) {261 for(no = 1; no <= max; no++) {262 $check_key = "stock_unlimited:"+no;263 $input_key = "stock:"+no;264 265 list = new Array($input_key);266 267 if(document.form1[$check_key].checked) {268 fnChangeDisabled(list, icolor);269 document.form1[$input_key].value = "";270 } else {271 fnChangeDisabled(list, '');272 }273 }274 }275 276 245 // Form指定のSubmit 277 246 function fnFormSubmit(form) {
Note: See TracChangeset
for help on using the changeset viewer.