ÿØÿà JFIF ÿÛ „ ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /proc/self/root/var/www/html/tien-dien/code/admin/product/ |
<?php global $row_check, $arr_categories, $arr_category_check, $txt_form_en, $func, $DB; ?> <div class="card"> <div class="card-header">Cáºp nháºt sản phẩm</div> <div class="card-body"> <form action="?act=admin&code=product&type=product" method="post" enctype="multipart/form-data"> <input type="hidden" value="<?php echo $row_check['id'];?>" name="f[id]"> <div class="form-body"> <div class="row"> <div class="col-md-12"> <div class="h-auto bg-primary p-1 text-white rounded mb-2">Danh mục sản phẩm</div> <?php showListCategories($arr_categories,0,'+',$arr_category_check);?> </div> </div> <div class="row mt-2"> <div class="col-md-12"> <div class="form-group"> <label class="control-label">Tên sản phẩm</label> <input type="text" class="form-control" placeholder="" name="f[title]" value="<?php echo $row_check['title'];?>" required> </div> </div> <div class="col-md-12 <?php echo $txt_form_en;?>"> <div class="form-group"> <label class="control-label">Tên sản phẩm Tiếng Anh</label> <input type="text" class="form-control" name="f[etitle]" value="<?php echo $row_check['etitle'];?>"> </div> </div> <div class="col-md-12"> <div class="form-group"> <label>Hình ảnh</label> <input type="file" name="image_field" class="dropify" data-default-file="<?php echo $row_check['path_img'];?>" data-height="100" data-max-file-size="1M" data-show-remove="false"> </div> </div> <div class="col-md-4"> <div class="form-group"> <label>Giá bán</label> <input type="number" class="form-control" name="f[price]" value="<?php echo $row_check['price'];?>" required> </div> </div> <div class="col-md-4"> <div class="form-group"> <label>Giá cÅ©</label> <input type="number" class="form-control" name="f[old_price]" value="<?php echo $row_check['old_price'];?>"> </div> </div> <div class="col-md-4"> <div class="form-group"> <label>Số lượng</label> <input type="number" class="form-control" name="f[quantity]" value="<?php echo $row_check['quantity'];?>" required> </div> </div> <div class="col-md-12"> <div class="h-auto bg-primary p-1 text-white rounded mb-2">Thông tin giảm giá</div> </div> <div class="col-md-4"> <div class="form-group"> <label>Số tiá»n giảm giá</label> <input type="number" class="form-control" name="f[discount_amount]" value="<?php echo isset($row_check['discount_amount']) ? $row_check['discount_amount'] : 0;?>"> </div> </div> <div class="col-md-4"> <div class="form-group"> <label>Ngà y bắt đầu giảm giá</label> <input type="datetime-local" class="form-control" name="f[discount_start_date]" value="<?php echo isset($row_check['discount_start_date']) ? date('Y-m-d\TH:i', strtotime($row_check['discount_start_date'])) : '';?>"> </div> </div> <div class="col-md-4"> <div class="form-group"> <label>Ngà y kết thúc giảm giá</label> <input type="datetime-local" class="form-control" name="f[discount_end_date]" value="<?php echo isset($row_check['discount_end_date']) ? date('Y-m-d\TH:i', strtotime($row_check['discount_end_date'])) : '';?>"> </div> </div> <div class="col-md-12"> <div class="form-group"> <label>Mô tả</label> <textarea class="form-control" rows="3" name="f[intro]"><?php echo $row_check['intro'];?></textarea> </div> </div> <div class="col-md-12 <?php echo $txt_form_en;?>"> <div class="form-group"> <label>Mô tả tiếng Anh</label> <textarea class="form-control" rows="3" name="f[eintro]"><?php echo $row_check['eintro'];?></textarea> </div> </div> <div class="col-md-12"> <div class="form-group"> <label>Chi tiết</label> <?php echo $func->tinymce('f[body]','f_body',html_entity_decode($row_check['body']),10); ?> </div> </div> <div class="col-md-12 <?php echo $txt_form_en;?>"> <div class="form-group"> <label>Chi tiết tiếng Anh</label> <?php echo $func->tinymce('f[ebody]','f_ebody',html_entity_decode($row_check['ebody']),10); ?> </div> </div> <div class="col-md-12"> <div class="form-group"> <label>Thông số kỹ thuáºt</label> <?php echo $func->tinymce('f[specification]','f_specification',html_entity_decode($row_check['specification']),10); ?> </div> </div> <div class="col-md-12 <?php echo $txt_form_en;?>"> <div class="form-group"> <label>Thông số kỹ thuáºt tiếng Anh</label> <?php echo $func->tinymce('f[especification]','f_especification',html_entity_decode($row_check['especification']),10); ?> </div> </div> <div class="col-md-12"> <div class="form-group"> <label>Từ khóa (tags)</label> <input type="text" class="form-control" name="tags" value="<?php echo $row_check['tags'];?>" required> </div> </div> <div class="col-md-6"> <div class="form-group"> <label>Vị trÃ</label> <input type="text" class="form-control" name="f[pos]" value="<?php echo $row_check['pos'];?>" required> </div> </div> <div class="col-md-6"> <div class="form-group"> <label>Cá»a hà ng</label> <select class="form-control" name="f[store_id]"> <option value="0">-- Chá»n cá»a hà ng --</option> <?php // Get current user $current_user_id = isset($CORE->user['user_id']) ? $CORE->user['user_id'] : 0; $is_admin = isset($CORE->user['user_type']) && $CORE->user['user_type'] == 'admin'; // Query to get stores $store_query = $is_admin ? "SELECT * FROM tb_stores WHERE status = 1 ORDER BY store_name ASC" : "SELECT * FROM tb_stores WHERE status = 1 AND user_id = '$current_user_id' ORDER BY store_name ASC"; $query_stores = $DB->query($store_query); while ($store = $DB->fetch_row($query_stores)) { $selected = (isset($row_check['store_id']) && $store['store_id'] == $row_check['store_id']) ? 'selected' : ''; echo '<option value="'.$store['store_id'].'" '.$selected.'>'.$store['store_name'].'</option>'; } ?> </select> </div> </div> <div class="col-md-12"> <div class="h-auto bg-primary p-1 text-white rounded mb-2">Phương thức váºn chuyển</div> </div> <div class="col-md-12"> <div class="form-group"> <label>Chá»n phương thức váºn chuyển</label> <div class="row"> <?php // Get shipping methods $shipping_query = "SELECT * FROM tb_shipping_methods WHERE status = 1 ORDER BY sort_order ASC"; $query_shipping = $DB->query($shipping_query); // Get selected shipping methods for this product $selected_shipping = array(); if ($row_check['id'] > 0) { $shipping_product_query = "SELECT shipping_method_id FROM tb_product_shipping WHERE product_id = '{$row_check['id']}'"; $result_shipping_product = $DB->query($shipping_product_query); while ($shipping_product = $DB->fetch_row($result_shipping_product)) { $selected_shipping[] = $shipping_product['shipping_method_id']; } } while ($shipping = $DB->fetch_row($query_shipping)) { $checked = in_array($shipping['id'], $selected_shipping) ? 'checked' : ''; echo '<div class="col-md-4"> <div class="form-check"> <input type="checkbox" class="form-check-input" id="shipping_'.$shipping['id'].'" name="shipping_methods[]" value="'.$shipping['id'].'" '.$checked.'> <label class="form-check-label" for="shipping_'.$shipping['id'].'">'.$shipping['name'].' ('.number_format($shipping['cost']).' VNÄ)</label> </div> </div>'; } ?> </div> </div> </div> </div> <div class="row"> <div class="col-md-6"> <div class="form-check"> <input type="checkbox" class="form-check-input" id="tin_noi_bat" name="f[noibat]" <?php if($row_check['noibat']==1){echo 'checked';}?>> <label class="form-check-label" for="tin_noi_bat">Sản phẩm nổi báºt</label> </div> </div> <div class="col-md-6"> <div class="form-check"> <input type="checkbox" class="form-check-input" id="kich_hoat" name="f[status]" <?php if(intval($row_check['status'])==0){echo 'checked';}?>> <label class="form-check-label" for="kich_hoat">KÃch hoạt</label> </div> </div> </div> <!-- Product Attributes Section --> <div class="row mt-4"> <div class="col-md-12"> <div class="h-auto bg-primary p-1 text-white rounded mb-2">Thuá»™c tÃnh sản phẩm</div> <div id="attributes-container"> <?php // Load existing attributes for this product if editing if ($row_check['id'] > 0) { $product_attributes = array(); $query_attrs = $DB->query(" SELECT a.attribute_id, a.attribute_name, a.attribute_ename, v.value_id, v.value_name, v.value_ename, v.additional_price, v.quantity, v.path_img, v.is_video FROM tb_product_attributes a JOIN tb_product_attribute_values v ON a.attribute_id = v.attribute_id JOIN tb_product_attribute_mapping m ON v.value_id = m.value_id WHERE m.product_id = '{$row_check['id']}' ORDER BY a.attribute_id, v.value_id "); while ($row_attr = $DB->fetch_row($query_attrs)) { if (!isset($product_attributes[$row_attr['attribute_id']])) { $product_attributes[$row_attr['attribute_id']] = array( 'attribute_name' => $row_attr['attribute_name'], 'attribute_ename' => $row_attr['attribute_ename'], 'values' => array() ); } $product_attributes[$row_attr['attribute_id']]['values'][] = array( 'value_id' => $row_attr['value_id'], 'value_name' => $row_attr['value_name'], 'value_ename' => $row_attr['value_ename'], 'additional_price' => $row_attr['additional_price'], 'quantity' => $row_attr['quantity'], 'path_img' => $row_attr['path_img'], 'is_video' => $row_attr['is_video'] ); } // Display existing attributes foreach ($product_attributes as $attr_id => $attribute) { ?> <div class="attribute-group card mb-3"> <div class="card-header"> <div class="row"> <div class="col-md-5"> <input type="text" class="form-control" name="attributes[<?php echo $attr_id; ?>][name]" placeholder="Tên thuá»™c tÃnh" value="<?php echo $attribute['attribute_name']; ?>" required> </div> <div class="col-md-5 <?php echo $txt_form_en; ?>"> <input type="text" class="form-control" name="attributes[<?php echo $attr_id; ?>][ename]" placeholder="Attribute Name (English)" value="<?php echo $attribute['attribute_ename']; ?>"> </div> <div class="col-md-2"> <button type="button" class="btn btn-danger btn-sm remove-attribute float-right">Xóa</button> </div> </div> </div> <div class="card-body"> <div class="attribute-values"> <?php foreach ($attribute['values'] as $value) { ?> <div class="attribute-value-row row mb-2"> <input type="hidden" name="attributes[<?php echo $attr_id; ?>][values][<?php echo $value['value_id']; ?>][value_id]" value="<?php echo $value['value_id']; ?>"> <div class="col-md-3"> <input type="text" class="form-control" name="attributes[<?php echo $attr_id; ?>][values][<?php echo $value['value_id']; ?>][name]" placeholder="Giá trị" value="<?php echo $value['value_name']; ?>" required> </div> <div class="col-md-3 <?php echo $txt_form_en; ?>"> <input type="text" class="form-control" name="attributes[<?php echo $attr_id; ?>][values][<?php echo $value['value_id']; ?>][ename]" placeholder="Value (English)" value="<?php echo $value['value_ename']; ?>"> </div> <div class="col-md-2"> <input type="number" class="form-control" name="attributes[<?php echo $attr_id; ?>][values][<?php echo $value['value_id']; ?>][price]" placeholder="Giá thêm" value="<?php echo $value['additional_price']; ?>"> </div> <div class="col-md-2"> <input type="number" class="form-control" name="attributes[<?php echo $attr_id; ?>][values][<?php echo $value['value_id']; ?>][quantity]" placeholder="Số lượng" value="<?php echo $value['quantity']; ?>"> </div> <div class="col-md-1"> <div class="form-check mt-2"> <input type="checkbox" class="form-check-input is-video-check" id="is_video_<?php echo $attr_id; ?>_<?php echo $value['value_id']; ?>" name="attributes[<?php echo $attr_id; ?>][values][<?php echo $value['value_id']; ?>][is_video]" <?php if($value['is_video']==1){echo 'checked';}?>> <label class="form-check-label" for="is_video_<?php echo $attr_id; ?>_<?php echo $value['value_id']; ?>">Video</label> </div> </div> <div class="col-md-1"> <button type="button" class="btn btn-danger btn-sm remove-value">Xóa</button> </div> <div class="col-md-12 mt-2"> <input type="file" name="attribute_image_<?php echo $attr_id; ?>_<?php echo $value['value_id']; ?>" class="form-control-file"> <?php if (!empty($value['path_img'])) { ?> <div class="mt-2"> <?php if ($value['is_video'] == 1) { ?> <video width="100" height="100" controls> <source src="<?php echo $value['path_img']; ?>" type="video/mp4"> Your browser does not support the video tag. </video> <?php } else { ?> <img src="<?php echo $value['path_img']; ?>" width="100" height="100" class="img-thumbnail"> <?php } ?> </div> <?php } ?> </div> </div> <?php } ?> </div> <button type="button" class="btn btn-info btn-sm add-value mt-2" data-attribute-id="<?php echo $attr_id; ?>">Thêm giá trị</button> </div> </div> <?php } } ?> </div> <button type="button" class="btn btn-success" id="add-attribute">Thêm thuá»™c tÃnh má»›i</button> </div> </div> <!-- End Product Attributes Section --> </div> <div class="form-actions mt-3"> <button type="submit" class="btn btn-success" name="submitbt"> <i class="fa fa-check"></i> Save</button> <button type="button" class="btn btn-inverse" onclick="location.href='?act=admin&code=product'">Cancel</button> </div> </form> </div> </div> <script> (function(){ var input = document.querySelector('input[name=tags]'); new Tagify(input) })() // Product Attributes JavaScript document.addEventListener('DOMContentLoaded', function() { let attributeCounter = 1000; // Start with a high number to avoid conflicts with existing IDs let valueCounter = 1000; // Add new attribute document.getElementById('add-attribute').addEventListener('click', function() { const attributeId = 'new_' + attributeCounter++; const attributeHtml = ` <div class="attribute-group card mb-3"> <div class="card-header"> <div class="row"> <div class="col-md-5"> <input type="text" class="form-control" name="attributes[${attributeId}][name]" placeholder="Tên thuá»™c tÃnh" required> </div> <div class="col-md-5 ${document.querySelector('.<?php echo $txt_form_en; ?>')?'<?php echo $txt_form_en; ?>':''}"> <input type="text" class="form-control" name="attributes[${attributeId}][ename]" placeholder="Attribute Name (English)"> </div> <div class="col-md-2"> <button type="button" class="btn btn-danger btn-sm remove-attribute float-right">Xóa</button> </div> </div> </div> <div class="card-body"> <div class="attribute-values"> <!-- Values will be added here --> </div> <button type="button" class="btn btn-info btn-sm add-value mt-2" data-attribute-id="${attributeId}">Thêm giá trị</button> </div> </div> `; document.getElementById('attributes-container').insertAdjacentHTML('beforeend', attributeHtml); }); // Add new value to an attribute document.body.addEventListener('click', function(e) { if (e.target.classList.contains('add-value')) { const attributeId = e.target.getAttribute('data-attribute-id'); const valueId = 'new_' + valueCounter++; const valueHtml = ` <div class="attribute-value-row row mb-2"> <div class="col-md-3"> <input type="text" class="form-control" name="attributes[${attributeId}][values][${valueId}][name]" placeholder="Giá trị" required> </div> <div class="col-md-3 ${document.querySelector('.<?php echo $txt_form_en; ?>')?'<?php echo $txt_form_en; ?>':''}"> <input type="text" class="form-control" name="attributes[${attributeId}][values][${valueId}][ename]" placeholder="Value (English)"> </div> <div class="col-md-2"> <input type="number" class="form-control" name="attributes[${attributeId}][values][${valueId}][price]" placeholder="Giá thêm" value="0"> </div> <div class="col-md-2"> <input type="number" class="form-control" name="attributes[${attributeId}][values][${valueId}][quantity]" placeholder="Số lượng" value="0"> </div> <div class="col-md-1"> <div class="form-check mt-2"> <input type="checkbox" class="form-check-input is-video-check" id="is_video_${attributeId}_${valueId}" name="attributes[${attributeId}][values][${valueId}][is_video]"> <label class="form-check-label" for="is_video_${attributeId}_${valueId}">Video</label> </div> </div> <div class="col-md-1"> <button type="button" class="btn btn-danger btn-sm remove-value">Xóa</button> </div> <div class="col-md-12 mt-2"> <input type="file" name="attribute_image_${attributeId}_${valueId}" class="form-control-file"> </div> </div> `; const valuesContainer = e.target.previousElementSibling; valuesContainer.insertAdjacentHTML('beforeend', valueHtml); } }); // Remove attribute document.body.addEventListener('click', function(e) { if (e.target.classList.contains('remove-attribute')) { if (confirm('Bạn có chắc chắn muốn xóa thuá»™c tÃnh nà y?')) { const attributeGroup = e.target.closest('.attribute-group'); attributeGroup.remove(); } } }); // Remove value document.body.addEventListener('click', function(e) { if (e.target.classList.contains('remove-value')) { if (confirm('Bạn có chắc chắn muốn xóa giá trị nà y?')) { const valueRow = e.target.closest('.attribute-value-row'); valueRow.remove(); } } }); }); </script>