diff options
Diffstat (limited to 'public/admin/view/template/extension/openbay/amazon_item_links.twig')
-rw-r--r-- | public/admin/view/template/extension/openbay/amazon_item_links.twig | 344 |
1 files changed, 344 insertions, 0 deletions
diff --git a/public/admin/view/template/extension/openbay/amazon_item_links.twig b/public/admin/view/template/extension/openbay/amazon_item_links.twig new file mode 100644 index 0000000..27fd3fa --- /dev/null +++ b/public/admin/view/template/extension/openbay/amazon_item_links.twig @@ -0,0 +1,344 @@ +{{ header }}{{ column_left }} +<div id="content"> + <div class="page-header"> + <div class="container-fluid"> + <div class="pull-right"> + <a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div> + <h1>{{ heading_title }}</h1> + <ul class="breadcrumb"> + {% for breadcrumb in breadcrumbs %} + <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li> + {% endfor %} + </ul> + </div> + </div> + <div class="container-fluid"> + <form id="product-form"> + <div class="alert alert-info"> + <p>{{ text_desc1 }}</p> + <p>{{ text_desc2 }}</p> + <p>{{ text_desc3 }}</p> + </div> + <div class="well"> + <div class="row"> + <div class="col-sm-12 text-right"> + <a class="btn btn-primary" id="button-load">{{ button_load }}</a> + </div> + </div> + </div> + <table class="table table-bordered table-hover"> + <thead id="table-head-1"> + <tr> + <th class="text-center" colspan="3"><h4>{{ text_new_link }}</h4></th> + </tr> + </thead> + <thead id="table-head-2"> + <tr> + <th class="text-right">{{ text_autocomplete_product }}</th> + <th class="text-left">{{ text_amazon_sku }}</th> + <th class="text-center">{{ text_action }}</th> + </tr> + </thead> + <tbody id="unlinked-items"> + <tr> + <td class="text-right"> + <input type="hidden" id="new-product-id"> + <input id="new-product" type="text" class="form-control" autocomplete="off"> + </td> + <td> + <input id="new-amazon-sku" type="text" class="form-control" autocomplete="off"> + </td> + <td class="text-center"> + <a class="btn btn-primary" id="add-new-button" onclick="addNewLinkAutocomplete()" data-toggle="tooltip" data-original-title="{{ button_add }}"><i class="fa fa-plus-circle"></i></a> + </td> + </tr> + </tbody> + </table> + <table class="table table-bordered table-hover"> + <thead> + <tr> + <th class="text-center" colspan="6"><h4>{{ text_linked_items }}</h4></th> + </tr> + </thead> + <thead> + <tr> + <th>{{ text_name }}</th> + <th>{{ text_sku }}</th> + <th>{{ text_model }}</th> + <th>{{ text_combination }}</th> + <th>{{ text_amazon_sku }}</th> + <th class="text-center">{{ text_action }}</th> + </tr> + </thead> + <tbody id="linked-items"></tbody> + </table> + </form> + </div> +</div> +<script type="text/javascript"><!-- + $(document).ready(function () { + loadLinks(); + }); + + function loadLinks() { + $.ajax({ + url: 'index.php?route=extension/openbay/amazon/getLinks&user_token={{ user_token }}', + type: 'get', + dataType: 'json', + data: 'product_id=' + encodeURIComponent($('#new-product-id').val()) + '&amazon_sku=' + encodeURIComponent($('#new-amazon-sku').val()), + success: function (json) { + var rows = ''; + for (i in json) { + rows += '<tr>'; + rows += '<td class="text-left">' + json[i]['product_name'] + '</td>'; + if (json[i]['var'] != '') { + rows += '<td class="text-left">' + json[i]['var'] + '</td>'; + } else { + rows += '<td class="text-left">' + json[i]['sku'] + '</td>'; + } + rows += '<td class="text-left">' + json[i]['model'] + '</td>'; + + if (typeof json[i]['combination'] == 'undefined') { + rows += '<td class="text-left">-</td>'; + } else { + rows += '<td class="text-left">' + json[i]['combination'] + '</td>'; + } + + rows += '<td class="text-left">' + json[i]['amazon_sku'] + '</td>'; + rows += '<td class="text-center"><a data-toggle="tooltip" data-original-title="{{ button_remove }}" class="btn btn-danger" onclick="removeLink(this, \'' + json[i]['amazon_sku'] + '\');"><i class="fa fa-times-circle"></i></a></td>'; + rows += '</tr>'; + } + $('#linked-items').html(rows); + }, + error: function (xhr, ajaxOptions, thrownError) { + if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } + } + }); + } + + $('#button-load').bind('click', function(e) { + e.preventDefault(); + + $.ajax({ + url: 'index.php?route=extension/openbay/amazon/getUnlinked&user_token={{ user_token }}', + type: 'get', + dataType: 'json', + beforeSend: function () { + $('#button-load').empty().html('<i class="fa fa-cog fa-lg fa-spin"></i>').attr('disabled','disabled'); + }, + complete: function () { + $('#button-load').empty().html('{{ button_load }}').removeAttr('disabled'); + }, + success: function (json) { + var thread1 = ''; + thread1 += '<tr>'; + thread1 += '<td class="text-center" colspan="6">{{ text_unlinked_items }}</td>'; + thread1 += '</tr>'; + $('#table-head-1').html(thread1); + + var thread2 = ''; + thread2 += '<tr>'; + thread2 += '<td>{{ text_name }}</td>'; + thread2 += '<td>{{ text_model }}</td>'; + thread2 += '<td>{{ text_combination }}</td>'; + thread2 += '<td>{{ text_sku }}</td>'; + thread2 += '<td>{{ text_amazon_sku }}</td>'; + thread2 += '<td class="text-center">{{ text_action }}</td>'; + thread2 += '</tr>'; + $('#table-head-2').html(thread2); + + var rows = ''; + for (i in json) { + rows += '<tr id="product_row_' + json[i]['product_id'] + '_' + json[i]['sku'] + '">'; + rows += '<td class="text-left">' + json[i]['product_name'] + '</td>'; + rows += '<td class="text-left">' + json[i]['model'] + '</td>'; + rows += '<td class="text-left">' + json[i]['combination'] + '</td>'; + rows += '<td class="text-left">' + json[i]['sku'] + '</td>'; + rows += '<td class="text-left">'; + rows += '<div class="amazon_sku_div_' + json[i]['product_id'] + '_' + json[i]['sku'] + '">'; + rows += '<div class="row">'; + rows += '<div class="col-sm-8 form-group">'; + rows += '<input class="form-control amazon_sku_' + json[i]['product_id'] + '_' + json[i]['sku'] + '" type="text">'; + rows += '</div>'; + rows += '<div class="col-sm-4 form-group">'; + rows += '<a class="btn btn-primary" onclick="addNewSkuField(' + json[i]['product_id'] + ', \'' + json[i]['sku'] + '\')" data-toggle="tooltip" data-original-title="{{ button_add }}"><i class="fa fa-plus-circle"></i></a>'; + rows += '</div>'; + rows += '</div>'; + rows += '</div>'; + rows += '</td>'; + rows += '<td class="text-center"><a class="btn btn-primary" onclick="addNewLink(this, \'' + json[i]['product_id'] + '\', \'' + json[i]['sku'] + '\')" data-toggle="tooltip" data-original-title="{{ button_add }}"><i class="fa fa-plus-circle"></i></a></td>'; + rows += '</tr>'; + } + + $('#unlinked-items').html(rows); + }, + error: function (xhr, ajaxOptions, thrownError) { + if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } + } + }); + }); + + function addLink(button, product_id, amazon_sku, variation) { + $.ajax({ + url: 'index.php?route=extension/openbay/amazon/addLink&user_token={{ user_token }}', + type: 'get', + dataType: 'json', + async: 'false', + data: 'product_id=' + encodeURIComponent(product_id) + '&amazon_sku=' + encodeURIComponent(amazon_sku) + '&var=' + encodeURIComponent(variation), + beforeSend: function () { + $(button).empty().html('<i class="fa fa-cog fa-lg fa-spin"></i>').attr('disabled','disabled'); + }, + complete: function () { + $(button).empty().html('<i class="fa fa-plus-circle"></i>').removeAttr('disabled'); + }, + success: function (json) { + loadLinks(); + }, + error: function (xhr, ajaxOptions, thrownError) { + if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } + } + }); + } + + function removeLink(button, amazon_sku) { + $.ajax({ + url: 'index.php?route=extension/openbay/amazon/deleteLink&user_token={{ user_token }}', + type: 'get', + dataType: 'json', + data: 'amazon_sku=' + encodeURIComponent(amazon_sku), + beforeSend: function () { + $(button).empty().html('<i class="fa fa-cog fa-lg fa-spin"></i>').attr('disabled','disabled'); + }, + success: function (json) { + //alert(json); + loadLinks(); + }, + error: function (xhr, ajaxOptions, thrownError) { + if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } + } + }); + } + + function addNewSkuField(product_id, variation) { + var html = ''; + html += '<div class="amazon_sku_div_' + product_id + '_' + variation + '">'; + html += '<div class="row">'; + html += '<div class="col-sm-8 form-group">'; + html += '<input class="form-control amazon_sku_' + product_id + '_' + variation + '" type="text">'; + html += '</div>'; + html += '<div class="col-sm-4 form-group">'; + html += '<a class="btn btn-danger remove_sku_icon_' + product_id + '_' + variation + '" onclick="removeSkuField(this, \'' + product_id + '\', \'' + variation + '\')"><i class="fa fa-minus-circle"></i></a>'; + html += '</div>'; + html += '</div>'; + html += '</div>'; + + $(".amazon_sku_div_" + product_id + "_" + variation.replace(":", "\\:")).last().after(html); + } + + function removeSkuField(icon, product_id, variation) { + var removeIndex = $('.remove_sku_icon_' + product_id + '_' + variation.replace(':', '\\:')).index($(icon)) + 1; + $(".amazon_sku_div_" + product_id + "_" + variation.replace(':', '\\:') + ":eq(" + removeIndex + ")").remove(); + } + + function addNewLink(button, product_id, variation) { + var errors = 0; + + console.log(".amazon_sku_" + product_id + "_" + variation.replace(':', '\\:')); + $(".amazon_sku_" + product_id + "_" + variation.replace(':', '\\:')).each(function (index) { + if ($(this).val() == '') { + errors++; + } + }); + if (errors > 0) { + alert('{{ error_empty_sku }}'); + return; + } + + $(".amazon_sku_" + product_id + "_" + variation.replace(':', '\\:')).each(function (index) { + addLink(button, product_id, $(this).val(), variation); + }); + + $("#product_row_" + product_id + "_" + variation.replace(':', '\\:')).remove(); + } + + function addNewLinkAutocomplete() { + if ($('#new-product').val() == "") { + alert('{{ error_empty_name }}'); + return; + } + + if ($('#new-product-id').attr('label') != $('#new-product').val()) { + alert('{{ error_no_product_exists }}'); + return; + } + + if ($('#new-amazon-sku').val() == "") { + alert('{{ error_empty_sku }}'); + return; + } + + var product_id = $('#new-product-id').val(); + var amazon_sku = $('#new-amazon-sku').val(); + var variation = ''; + if ($('#variant-option-selector').length != 0) { + variation = $('#variant-option-selector').val(); + } + + addLink('#add-new-button', product_id, amazon_sku, variation); + + $('#new-product').val(''); + $('#new-amazon-sku').val(''); + $('#new-product-id').val(''); + $('#new-product-id').attr('label', ''); + $('.variant-option-selector').remove(); + } + + $('#new-product').autocomplete({ + 'source': function(request, response) { + $.ajax({ + url: 'index.php?route=catalog/product/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request), + dataType: 'json', + success: function (json) { + response($.map(json, function (item) { + return { + label: item['name'], + value: item['product_id'] + } + })); + } + }); + }, + 'select': function (item) { + $('#new-product-id').val(item['value']); + $('#new-product').val(item['label']); + $('#new-product-id').attr('label',item['label']); + openstockCheck(item['value']); + } + }); + + function openstockCheck(product_id) { + $.ajax({ + url: 'index.php?route=extension/openbay/amazon/getVariants&user_token={{ user_token }}', + dataType: 'json', + type: 'get', + data: 'product_id=' + product_id, + success: function (data) { + if (!data) { + $(".variant-option-selector").remove(); + return; + } + + var optionHtml = '<div class="form-group variant-option-selector" style="margin-top:5px;"><select id="variant-option-selector" class="form-control variant-option-selector"><option value=""/>'; + for (var i in data) { + optionHtml += '<option value="' + data[i]['sku'] + '">' + data[i]['combination'] + '</option>'; + } + optionHtml += '</select></div>'; + $('#new-product').after(optionHtml); + }, + error: function (xhr, ajaxOptions, thrownError) { + if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } + } + }); + } +//--></script> +{{ footer }} |