shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

amazonus_listing_advanced.twig (27391B)


      1 {{ header }}{{ column_left }}
      2 <div id="content">
      3     <div class="page-header">
      4         <div class="container-fluid">
      5             <div class="pull-right">
      6                 {% if has_listing_errors %}
      7                 <a href="{{ url_remove_errors }}" data-toggle="tooltip" title="{{ button_remove_error }}" class="btn btn-danger"><i class="fa fa-reply"></i></a>
      8                 {% endif %}
      9                 <a href="{{ cancel_url }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a> </div>
     10             <h1>{{ text_title_advanced }}</h1>      <ul class="breadcrumb">
     11         {% for breadcrumb in breadcrumbs %}
     12         <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
     13         {% endfor %}
     14       </ul>
     15         </div>
     16     </div>
     17     <div class="container-fluid">
     18         {% if errors %}
     19         <div class="alert alert-danger alert-dismissible">
     20             <ul>
     21                 {% for listing_error in errors %}
     22                 <li><i class="fa fa-exclamation-circle"></i> {{ listing_error.message }}</li>
     23                 {% endfor %}
     24             </ul>
     25         </div>
     26         {% endif %}
     27         {% if success %}
     28         <div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> {{ success }}</div>
     29         {% endif %}
     30         <ul class="nav nav-tabs" id="tabs">
     31             <li class="active"><a href="#page-main" data-toggle="tab">{{ tab_main }}</a></li>
     32         </ul>
     33         <form method="POST" id="product_form_advanced" class="form-horizontal">
     34             <input type="hidden" name="upload_after" value="false">
     35             <div class="tab-content" id="tab-content">
     36                 <div class="tab-pane active" id="page-main">
     37                   <div class="form-group">
     38                     <label class="col-sm-2 control-label">{{ entry_product }}</label>
     39                     <div class="col-sm-10">
     40                       <p><a href="{{ listing_url }}">{{ listing_name }}{% if options is not empty %} : {% endif %}</a>
     41                         {% if options %}
     42                         <select id="openstock_selector" name="optionVar" class="form-control">
     43                           {% set option_selected = false %}
     44                           {% for option in options %}
     45                             {% if option.sku is not empty %}
     46                               <option value="{{ option.sku }}"{% if variation == option.sku %} selected{% set option_selected = true %}{% endif %}>{{ option.combination }}</option>
     47                             {% endif %}
     48                           {% endfor %}
     49                           {% if option_selected == false %}
     50                             <option selected="selected"></option>
     51                           {% endif %}
     52                         </select>
     53                         {% endif %}
     54                       </p>
     55                     </div>
     56                   </div>
     57                     <div class="form-group required">
     58                         <label class="col-sm-2 control-label" for="category_selector" id="category_selector_label">{{ entry_category }}</label>
     59                         <div class="col-sm-4">
     60                             <select name="category_selector" id="category_selector" class="form-control">
     61                                 <option value=""></option>
     62                                 {% for category in amazonus_categories %}
     63                                     <option value="{{ category.template }}"{% if edit_product_category == category.name %} selected{% endif %}>{{ category.friendly_name }}</option>
     64                                 {% endfor %}
     65                             </select>
     66                         </div>
     67                     </div>
     68                     <table class="table table-bordered table-hover">
     69                         <tbody class="fields_advanced">
     70                         </tbody>
     71                     </table>
     72                 </div>
     73             </div>
     74             <div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true" id="browse-node-modal">
     75                 <div class="modal-dialog modal-lg">
     76                     <div class="modal-content">
     77                         <div class="modal-header">
     78                             <button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>
     79                             <h4 id="mySmallModalLabel" class="modal-title">{{ entry_browse_node }}</h4>
     80                         </div>
     81                         <div class="modal-body">
     82                             <div id="browse-node-content"></div>
     83                         </div>
     84                     </div>
     85                 </div>
     86             </div>
     87         </form>
     88         <div class="well">
     89             <div class="row">
     90                 <div class="col-md-12 text-right"> <a class="btn btn-primary" data-toggle="tooltip" title="{{ button_save }}" onclick="validate_and_save('advanced')"><i class="fa fa-save fa-lg"></i></a> <a class="btn btn-primary" data-toggle="tooltip" title="{{ button_save_upload }}" onclick="save_and_upload()"><i class="fa fa-cloud-upload fa-lg"></i></a> <a class="btn btn-primary" data-toggle="tooltip" title="{{ button_saved_listings }}" href="{{ saved_listings_url }}"><i class="fa fa-copy fa-lg"></i></a> </div>
     91             </div>
     92         </div>
     93     </div>
     94 </div>
     95 <script type="text/javascript"><!--
     96 $(document).ready(function(){
     97     $('#openstock_selector').change(function() {
     98         redirectOption($('#openstock_selector').val(), 'advanced');
     99     });
    100 
    101     {% if not amazonus_categories %}
    102         $("#advanced_table").html("");
    103         $(".content").prepend('<div id="warning" class="alert alert-danger">{{ error_connecting }}</div>');
    104         return;
    105     {% endif %}
    106 
    107     $(".fields_advanced :input").bind('change', function() {
    108         update_form(this, 'advanced');
    109     });
    110 
    111     $('#category_selector').change(function(){
    112         var xml = $('#category_selector').val();
    113         if (xml == '') {
    114             $('.fields_advanced').empty();
    115             $('.dynamic-tab').remove();
    116             $('.dynamic-page').remove();
    117             return;
    118         }
    119         show_form(xml, 'advanced');
    120     });
    121     //Update needed if editing
    122     $('#category_selector').change();
    123     $('#product_form_advanced input[name=upload_after]').val(false);
    124 
    125 });
    126 
    127 function redirectOption(varOption, tabOption) {
    128     var searchLoc = insertParamToUrl(document.location.search, 'sku', varOption);
    129     searchLoc = insertParamToUrl(searchLoc, 'tab', tabOption);
    130     searchLoc = searchLoc.substr(1);
    131     if (document.location.search === searchLoc) {
    132         return false;
    133     } else {
    134         document.location.search = searchLoc;
    135         return true;
    136     }
    137 }
    138 
    139 function insertParamToUrl(searchLoc, key, value) {
    140     var kvp = searchLoc.split('&');
    141 
    142     if (kvp == '') {
    143         searchLoc = '?' + key + '=' + value;
    144         return searchLoc;
    145     }
    146     else {
    147         var i = kvp.length; var x; while (i--) {
    148             x = kvp[i].split('=');
    149             if (x[0] == key) {
    150                 if (x[1] == value) {
    151                     return searchLoc;
    152                 }
    153                 x[1] = value;
    154                 kvp[i] = x.join('=');
    155                 break;
    156             }
    157         }
    158         if (i < 0) { kvp[kvp.length] = [key, value].join('='); }
    159         return kvp.join('&');
    160     }
    161 }
    162 
    163 var fieldsArray = new Array();
    164 
    165 function show_form(xml, formType) {
    166     $('.fields_' + formType).empty();
    167     $('.dynamic-tab').remove();
    168     $('.dynamic-page').remove();
    169 
    170     var parserURL = '{{ template_parser_url }}';
    171     var reqUrl = parserURL + '&xml=' + xml;
    172 
    173     if ($('#openstock_selector').val() !== undefined) {
    174         reqUrl = reqUrl + '&sku=' + $('#openstock_selector').val();
    175     }
    176 
    177     $.ajax({
    178         url: reqUrl,
    179         data: {},
    180         dataType: 'json',
    181         beforeSend: function() {
    182             $('#category_selector').attr('disabled', 'disabled');
    183             $('#category_selector_label').after('<a class="btn btn-primary wait" disabled="disabled"><i class="fa fa-cog fa-lg fa-spin"></i> </a>');
    184         },
    185         complete: function() {
    186             $('#category_selector').removeAttr('disabled');
    187             $('.wait').remove();
    188         },
    189         success: function(data) {
    190             if (data['status'] === 'error') {
    191                 if ('info' in data) {
    192                     alert(data['info']);
    193                 } else {
    194                     alert('Unexpected error.');
    195                 }
    196                 return;
    197             }
    198             for(tab in data['tabs']) {
    199                 $('#tabs').append('<li class="dynamic-tab"><a href="#page-' + data['tabs'][tab]['id'] + '" data-toggle="tab">' + data['tabs'][tab]['name'] + '</a></li>');
    200 
    201                 var pageHtml = '';
    202                 pageHtml += '<div id="page-' + data['tabs'][tab]['id'] + '" class="tab-pane dynamic-page">';
    203                 pageHtml += '<div class="fields_advanced"></div>';
    204                 pageHtml += '</div>'
    205 
    206                 $('#tab-content').append(pageHtml);
    207             }
    208 
    209             var categoryName = data['category'];
    210             fieldsArray[formType] = data['fields'];
    211 
    212             $('.fields_' + formType).append('<input type="hidden" name="category" value="' + categoryName + '">');
    213 
    214             for (i in fieldsArray[formType]) {
    215                 var row  = '<div class="form-group';
    216 
    217 
    218                 if (fieldsArray[formType][i]['type'] == 'required') {
    219                     row += ' required';
    220                 }
    221 
    222                 if (fieldsArray[formType][i]['child']){
    223                     row += ' child_row" display="no" field_index="' + i + '" style="display: none">';
    224                 } else {
    225                     row += '">';
    226                 }
    227 
    228                 row += '<label class="col-sm-2 control-label">'+fieldsArray[formType][i]['title']+'</label>';
    229                 row += '<div class="col-sm-10">';
    230 
    231                 row += '<div class="alert alert-danger" id="error_' + fieldsArray[formType][i]['name'] + '" style="display:none;"></div>'
    232 
    233                 if (fieldsArray[formType][i]['name'] == "Quantity") {
    234                     row += getQuantityField(fieldsArray[formType][i]);
    235                 } else if (fieldsArray[formType][i]['accepted']['type'] == "integer") {
    236                     if (fieldsArray[formType][i]['name'] == 'RecommendedBrowseNode' || fieldsArray[formType][i]['name'] == 'RecommendedBrowseNode2'){
    237                         row += getBrowseNodeField(fieldsArray[formType][i]);
    238                     } else {
    239                         row += getIntegerField(fieldsArray[formType][i]);
    240                     }
    241                 }
    242                 else if (fieldsArray[formType][i]['accepted']['type'] == "text_area") {
    243                     row += getTextAreaField(fieldsArray[formType][i]);
    244                 }
    245                 else if (fieldsArray[formType][i]['accepted']['type'] == "select") {
    246                     row += getSelectField(fieldsArray[formType][i]);
    247                 }
    248                 else if (fieldsArray[formType][i]['accepted']['type'] == "image") {
    249                     row += getImageField(fieldsArray[formType][i]);
    250                 }
    251                 else {
    252                     row += getStringField(fieldsArray[formType][i]);
    253                 }
    254 
    255                 if (fieldsArray[formType][i]['definition']) {
    256                     row += '<span class="help-block">' + fieldsArray[formType][i]['definition'] + '</span>';
    257                 }
    258 
    259                 row += '</div>';
    260                 row += '</div>';
    261 
    262                 $('#page-' + fieldsArray[formType][i]['tab'] + ' .fields_' + formType).append(row);
    263             }
    264 
    265             //Emulate changes to populate child fields
    266             $('.fields_' + formType + ' :input').each(function (i) {
    267                 $(this).change();
    268             });
    269         },
    270         error: function (xhr, ajaxOptions, thrownError) {
    271             if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); }
    272         }
    273     });
    274 }
    275 
    276 //Called when chenge to form was made. Shows child rows bassed on input if needed.
    277 function update_form(element, formType) {
    278     var changedFieldName = $(element).attr('field_name');
    279     var changedFieldValue = $(element).val();
    280 
    281     $('.fields_' + formType + ' .child_row').each(function (i) {
    282         var index = $(this).attr('field_index');
    283         if (fieldsArray[formType][index]['parent']['name'] == changedFieldName) {
    284             var showChild = false;
    285 
    286             //values is array?
    287             if (fieldsArray[formType][index]['parent']['value'] instanceof Array) {
    288                 for(i in fieldsArray[formType][index]['parent']['value']) {
    289                     if (fieldsArray[formType][index]['parent']['value'][i] == changedFieldValue) {
    290                         showChild = true;
    291                     }
    292                 }
    293             } else if (fieldsArray[formType][index]['parent']['value'] == changedFieldValue) {
    294                 showChild = true;
    295             } else if (fieldsArray[formType][index]['parent']['value'] == '*' && changedFieldValue != '') {
    296                 showChild = true;
    297             }
    298 
    299             if (showChild) {
    300                 $(this).attr('display', 'yes');
    301                 $(this).removeAttr('style');
    302             } else {
    303                 $('.fields_' + formType + ' [field_name="' + fieldsArray[formType][index]['name']  + '"]').val('');
    304                 $(this).attr('display', 'no');
    305                 $(this).attr('style', 'display: none');
    306             }
    307         }
    308     });
    309 }
    310 
    311 function getImageField(fieldData) {
    312     var output = "";
    313 
    314     output += '<a class="img-thumbnail img-edit" id="thumb-image-'+fieldData['name']+'">';
    315     if (fieldData['thumb'] != "") {
    316         output += '<img src="'+fieldData['thumb']+'" alt="" title="" />';
    317     } else {
    318         output += '<i class="fa fa-camera fa-5x"></i>';
    319     }
    320     output += "</a>";
    321     output += '<input type="hidden" id="input-image-'+fieldData['name']+'" name="fields[' + fieldData['name'] + ']" value="' + fieldData['value'] + '" accepted="' + fieldData['accepted']['type'] + '" field_name="' + fieldData['name'] + '" field_type="' + fieldData['type'] + '">';
    322 
    323     return output;
    324 }
    325 
    326 function getQuantityField(fieldData) {
    327     var output = "";
    328 
    329     output += fieldData['value'];
    330     output += '<input ';
    331     output += 'type="hidden" ';
    332     output += 'min="0" ';
    333     output += 'accepted="' + fieldData['accepted']['type'] + '" ';
    334     output += 'field_name="' + fieldData['name'] + '" ';
    335     output += 'field_type="' + fieldData['type'] + '" ';
    336     output += 'name="fields[' + fieldData['name'] + ']" ';
    337     output += 'value="' + fieldData['value'] + '" class="form-control">';
    338 
    339     return output;
    340 }
    341 
    342 function getIntegerField(fieldData) {
    343     var output = "";
    344 
    345     output += '<input ';
    346     output += 'type="number" ';
    347     output += 'min="0" ';
    348     output += 'accepted="' + fieldData['accepted']['type'] + '" ';
    349     output += 'field_name="' + fieldData['name'] + '" ';
    350     output += 'field_type="' + fieldData['type'] + '" ';
    351     output += 'name="fields[' + fieldData['name'] + ']" ';
    352     output += 'class="form-control" ';
    353     output += 'value="' + fieldData['value'] + '">';
    354 
    355     return output;
    356 }
    357 
    358 function getBrowseNodeField(fieldData) {
    359     var output = "";
    360 
    361     output += '<div class="input-group col-md-3">';
    362     output += '<input ';
    363     output += 'id="'+fieldData['name']+'_input" ';
    364     output += 'type="number" ';
    365     output += 'min="0" ';
    366     output += 'accepted="' + fieldData['accepted']['type'] + '" ';
    367     output += 'field_name="' + fieldData['name'] + '" ';
    368     output += 'field_type="' + fieldData['type'] + '" ';
    369     output += 'name="fields[' + fieldData['name'] + ']" ';
    370     output += 'class="form-control" ';
    371     output += 'onclick="loadBrowseNode(\''+fieldData['name']+'\');" ';
    372     output += 'value="' + fieldData['value'] + '">';
    373     output += '<span class="input-group-addon"><i class="fa fa-sitemap fa-lg"></i></span>';
    374     output += '</div>';
    375     output += '<span class="label label-info" style="display:none;" id="'+fieldData['name']+'_label"></span>';
    376 
    377     return output;
    378 }
    379 
    380 function getTextAreaField(fieldData) {
    381     var output = "";
    382 
    383     output += '<textarea ';
    384     if ('min_length' in fieldData['accepted']) {
    385         output += 'min_length="'+ fieldData['accepted']['min_length'] + '" ';
    386     }
    387     if ('max_length' in fieldData['accepted']) {
    388         output += 'max_length="'+ fieldData['accepted']['max_length'] + '" ';
    389     }
    390     output += 'field_name="' + fieldData['name'] + '" ';
    391     output += 'field_type="' +  fieldData['type'] + '" ';
    392     output += 'name="fields[' + fieldData['name'] + ']" class="form-control" rows="3">';
    393     output += fieldData['value'];
    394     output += '</textarea>';
    395 
    396     return output;
    397 }
    398 
    399 function getStringField(fieldData) {
    400     var output = "";
    401 
    402     output += '<input type="text"';
    403     output += 'accepted="' + fieldData['accepted']['type'] + '" ';
    404     if ('min_length' in fieldData['accepted']) {
    405         output += 'min_length="'+ fieldData['accepted']['min_length'] + '" ';
    406     }
    407     if ('max_length' in fieldData['accepted']) {
    408         output += 'max_length="'+ fieldData['accepted']['max_length'] + '" ';
    409     }
    410     output += 'field_name="' + fieldData['name'] + '" ';
    411     output += 'field_type="' + fieldData['type'] + '" ';
    412     output += 'name="fields[' + fieldData['name'] + ']" ';
    413     output += 'value="' + fieldData['value'] + '" class="form-control">';
    414 
    415     return output;
    416 }
    417 
    418 function getSelectField(fieldData) {
    419     var output = "";
    420 
    421     output += '<select ';
    422     output += 'field_name="' + fieldData['name'] + '" ';
    423     output += 'field_type="' + fieldData['type'] + '" ';
    424     output += 'name="fields[' + fieldData['name'] + ']" class="form-control">';
    425 
    426     output += '<option></option>';
    427 
    428     if (fieldData['accepted']['option'].length != undefined) {
    429         for(j in fieldData['accepted']['option']) {
    430             output += '<option ';
    431 
    432             if (fieldData['value'].toLowerCase() == fieldData['accepted']['option'][j]['value'].toLowerCase()) {
    433                 output += 'selected="selected" ';
    434             }
    435             output += 'value="' + fieldData['accepted']['option'][j]['value'] + '">';
    436             output += fieldData['accepted']['option'][j]['name'];
    437             output += '</option>';
    438         }
    439     }
    440     else {
    441         output += '<option ';
    442 
    443         if (fieldData['value'].toLowerCase() == fieldData['accepted']['option']['value'].toLowerCase()) {
    444             output += 'selected="selected" ';
    445         }
    446         output += 'value="' + fieldData['accepted']['option']['value'] + '">';
    447         output += fieldData['accepted']['option']['name'];
    448         output += '</option>';
    449     }
    450     output += '</select>';
    451     return output;
    452 }
    453 
    454 function validate(formType) {
    455     var warnings = 0;
    456     var productIdType;
    457     var productId;
    458     var productIdRequired;
    459 
    460     if ($('#category_selector').val() == '') {
    461         return false;
    462     }
    463 
    464     $('.fields_' + formType + ' :input').each(function (i) {
    465         if ($(this).parent().parent().attr('display') === "no") {
    466             return;
    467         }
    468 
    469         var field_value = $(this).val();
    470         var field_name = $(this).attr('field_name');
    471         var field_type = $(this).attr('field_type');
    472         var min_length = $(this).attr('min_length');
    473         var max_length = $(this).attr('max_length');
    474 
    475         if (field_name === 'Type') {
    476             productIdType = field_value;
    477         } else if (field_name === 'Value') {
    478             productId = field_value;
    479             if (field_type === 'required') {
    480                 productIdRequired = true;
    481             } else {
    482                 productIdRequired = false;
    483             }
    484         }
    485 
    486         if (field_type == 'required' || field_value !== '') {
    487             if (field_value === '') {
    488                 $('.fields_' + formType + ' #error_' + field_name).text('{{ error_required }}').show();
    489                 warnings ++;
    490             } else if (min_length != undefined && field_value.length < min_length) {
    491                 $('.fields_' + formType + ' #error_' + field_name).text('{{ error_length }} ' + min_length + ' {{ text_characters }}').show();
    492                 warnings ++;
    493             } else if (max_length != undefined && field_value.length > max_length) {
    494                 $('.fields_' + formType + ' #error_' + field_name).text((field_value.length - max_length) + ' {{ error_char_limit }}').show();
    495                 warnings ++;
    496             } else {
    497                 $('.fields_' + formType + ' #error_' + field_name).text('').hide();
    498             }
    499         }
    500     });
    501 
    502     if (productIdRequired && productIdType !== 'ASIN' && !isValidProductId(productId)) {
    503         $('.fields_' + formType + ' :input').each(function (i) {
    504             var field_name = $(this).attr('field_name');
    505             if (field_name === 'Value') {
    506                 $('.fields_' + formType + ' #error_' + field_name).text('Not valid product ID!');
    507                 warnings ++;
    508                 return;
    509             }
    510         });
    511     }
    512 
    513     if ($('.fields_' + formType + ' [name="category"]').val() == undefined) {
    514         warnings ++;
    515     }
    516 
    517     if (warnings > 0) {
    518         return false;
    519     } else {
    520         return true;
    521     }
    522 }
    523 
    524 function validate_and_save(formType) {
    525     if (validate(formType)) {
    526         if (formType == 'advanced') {
    527             $("#product_form_advanced").submit();
    528         } else if (formType == 'quick') {
    529             $("#product_form_quick").submit();
    530         }
    531     } else {
    532         alert('{{ error_not_saved }}');
    533     }
    534 }
    535 
    536 function save_and_upload() {
    537     $('#product_form_advanced input[name=upload_after]').val(true);
    538 
    539     if (validate('advanced')) {
    540         $("#product_form_advanced").submit();
    541     } else {
    542         alert('{{ error_not_saved }}');
    543     }
    544 }
    545 
    546 function isValidProductId(value) {
    547     var barcode = value.substring(0, value.length - 1);
    548     var checksum = parseInt(value.substring(value.length - 1), 10);
    549     var calcSum = 0;
    550     var calcChecksum = 0;
    551     barcode.split('').map(function(number, index ) {
    552         number = parseInt(number, 10);
    553         if (value.length === 13) {
    554             if (index % 2 === 0) {
    555                 calcSum += number;
    556             }
    557             else {
    558                 calcSum += number * 3;
    559             }
    560         } else {
    561             if (index % 2 === 0) {
    562                 calcSum += number * 3;
    563             }
    564             else {
    565                 calcSum += number;
    566             }
    567         }
    568     });
    569     calcSum %= 10;
    570     calcChecksum = (calcSum === 0) ? 0 : (10 - calcSum);
    571     if (calcChecksum !== checksum) {
    572         return false;
    573     }
    574     return true;
    575 }
    576 
    577 var nodeBox = '';
    578 var nodeString = '';
    579 var nodeStringSimple = '';
    580 
    581 function loadBrowseNode(field) {
    582     $('#browse-node-modal').modal('toggle');
    583 
    584     var html = '';
    585 
    586     $('#'+field+'_input').val('');
    587 
    588     nodeString = '';
    589     nodeStringSimple = '';
    590 
    591     $.ajax({
    592         url: 'index.php?route=extension/openbay/amazonus_listing/getBrowseNodes&user_token={{ user_token }}',
    593         type: 'POST',
    594         data: {},
    595         dataType: 'json',
    596         beforeSend: function(){
    597             $('#browse-node-content').empty();
    598             $('#'+field+'_label').empty().hide();
    599         },
    600         success: function(data) {
    601             if (data.node.error != true){
    602                 html += '<div class="well">';
    603                 html += '<div class="input-group col-md-12">';
    604                 html += '<p><select class="form-control" id="root-node" onchange="nodeSelect(\'root-node\', \''+field+'\');">';
    605                 html += '<option value="">{{ text_select }}</option>';
    606                 $.each(data.children, function(k,v){
    607                     html += '<option value="'+ v.node_id+'">'+ v.name+'</option>';
    608                 });
    609                 html += '</select></p>';
    610                 html += '</div>';
    611                 html += '</div>';
    612 
    613                 $('#browse-node-content').empty().html(html);
    614             }else{
    615                 alert(data.node.error);
    616             }
    617         },
    618         failure: function(){
    619             alert('{{ error_load_nodes }}');
    620         },
    621         error: function(){
    622             alert('{{ error_load_nodes }}');
    623         }
    624     });
    625 }
    626 
    627 function nodeSelect(field, original_field) {
    628     //called when the root node id is chosen
    629     var html = '';
    630     var node = $('#'+field).val();
    631     var parentNodeName = $('#'+field).find(":selected").text();
    632     nodeStringSimple += parentNodeName+' > ';
    633 
    634     $.ajax({
    635         url: 'index.php?route=extension/openbay/amazonus_listing/getBrowseNodes&user_token={{ user_token }}',
    636         type: 'POST',
    637         data: { node: node},
    638         dataType: 'json',
    639         beforeSend: function(){
    640             $('#browse-node-content').empty().html('<a class="btn btn-primary" disabled="disabled"><i class="fa fa-cog fa-lg fa-spin"></i> </a>');
    641         },
    642         success: function(data) {
    643             if (data.node.error != true){
    644                 html += '<div class="row">';
    645                 html += '<div class="col-sm-12 text-left">';
    646                 html += '<h4>'+nodeStringSimple+'</h4>';
    647                 html += '</div>';
    648                 html += '</div>';
    649                 if (data.node.final == 0){
    650                     html += '<div class="well">';
    651                     html += '<div class="input-group col-md-12">';
    652                     html += '<p><select class="form-control" id="'+field+'-'+node+'" onchange="nodeSelect(\''+field+'-'+node+'\', \''+original_field+'\');">';
    653                     html += '<option value="">{{ text_select }}</option>';
    654                     $.each(data.children, function(k,v){
    655                         html += '<option value="'+ v.node_id+'">'+ v.name+'</option>';
    656                     });
    657                     html += '</select></p>';
    658                     html += '</div>';
    659                     html += '</div>';
    660                 }else{
    661                     html += '<div class="row">';
    662                     html += '<div class="col-sm-12 text-right">';
    663                     html += '<a onclick="saveNode('+data.node.id+', \''+original_field+'\', \''+nodeStringSimple+'\')" class="btn btn-primary"><i class="fa fa-save fa-lg"></i> {{ button_save }}</a>';
    664                     html += '</div>';
    665                     html += '</div>';
    666                 }
    667 
    668                 $('#browse-node-content').empty().html(html);
    669             }else{
    670                 alert(data.node.error);
    671             }
    672         },
    673         failure: function(){
    674             alert('{{ error_load_nodes }}');
    675         },
    676         error: function(){
    677             alert('{{ error_load_nodes }}');
    678         }
    679     });
    680 }
    681 
    682 function saveNode(id, field, text){
    683     $('input[field_name='+field+']').val(id);
    684     $('#'+field+'_label').text(text).show();
    685     $('#browse-node-modal').modal('toggle');
    686 }
    687 //--></script>
    688 {{ footer }}