tracking.phtml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. // @codingStandardsIgnoreFile
  7. ?>
  8. <?php /** @var $block Magento\Shipping\Block\Adminhtml\Order\Tracking */?>
  9. <script>
  10. require(['prototype'], function(){
  11. //<![CDATA[
  12. var trackingControl;
  13. trackingControl = {
  14. index : 0,
  15. add : function () {
  16. this.index++;
  17. var data = {index:this.index};
  18. Element.insert($('track_row_container'), {
  19. bottom: this.template({
  20. data: data
  21. })
  22. });
  23. $('trackingC' + this.index).disabled = false;
  24. $('trackingT' + this.index).disabled = false;
  25. $('trackingN' + this.index).disabled = false;
  26. this.bindCurrierOnchange();
  27. },
  28. deleteRow : function(event) {
  29. var row = Event.findElement(event, 'tr');
  30. if (row) {
  31. row.parentNode.removeChild(row)
  32. }
  33. },
  34. bindCurrierOnchange : function() {
  35. var elems = $('tracking_numbers_table').select('.select');
  36. elems.each(function (elem) {
  37. if (!elem.onchangeBound) {
  38. elem.onchangeBound = true;
  39. elem.valueInput = $(elem.parentNode.parentNode).select('.number-title')[0];
  40. elem.observe('change', this.currierOnchange);
  41. }
  42. }.bind(this));
  43. },
  44. currierOnchange : function(event) {
  45. var elem = Event.element(event);
  46. var option = elem.options[elem.selectedIndex];
  47. if (option.value && option.value != 'custom') {
  48. elem.valueInput.value = option.text;
  49. }
  50. else {
  51. elem.valueInput.value = '';
  52. }
  53. }
  54. };
  55. window.trackingControl = trackingControl;
  56. //]]>
  57. });
  58. </script>
  59. <script id="track_row_template" type="text/x-magento-template">
  60. <tr>
  61. <td class="col-carrier">
  62. <select name="tracking[<%- data.index %>][carrier_code]"
  63. id="trackingC<%- data.index %>"
  64. class="select admin__control-select carrier"
  65. disabled="disabled">
  66. <?php foreach ($block->getCarriers() as $_code => $_name): ?>
  67. <option value="<?= /* @escapeNotVerified */ $_code ?>"><?= $block->escapeHtml($_name) ?></option>
  68. <?php endforeach; ?>
  69. </select>
  70. </td>
  71. <td class="col-title">
  72. <input class="input-text admin__control-text number-title"
  73. type="text"
  74. name="tracking[<%- data.index %>][title]"
  75. id="trackingT<%- data.index %>"
  76. value=""
  77. disabled="disabled" />
  78. </td>
  79. <td class="col-number">
  80. <input class="input-text admin__control-text required-entry"
  81. type="text"
  82. name="tracking[<%- data.index %>][number]"
  83. id="trackingN<%- data.index %>"
  84. value=""
  85. disabled="disabled" />
  86. </td>
  87. <td class="col-delete">
  88. <button
  89. type="button"
  90. class="action-default action-delete"
  91. onclick="trackingControl.deleteRow(event);return false">
  92. <span><?= /* @escapeNotVerified */ __('Delete') ?></span>
  93. </button>
  94. </td>
  95. </tr>
  96. </script>
  97. <div class="admin__control-table-wrapper">
  98. <table class="data-table admin__control-table" id="tracking_numbers_table">
  99. <thead>
  100. <tr class="headings">
  101. <th class="col-carrier"><?= /* @escapeNotVerified */ __('Carrier') ?></th>
  102. <th class="col-title"><?= /* @escapeNotVerified */ __('Title') ?></th>
  103. <th class="col-number"><?= /* @escapeNotVerified */ __('Number') ?></th>
  104. <th class="col-delete"><?= /* @escapeNotVerified */ __('Action') ?></th>
  105. </tr>
  106. </thead>
  107. <tfoot>
  108. <tr>
  109. <td colspan="4" class="col-actions-add"><?= $block->getChildHtml('add_button') ?></td>
  110. </tr>
  111. </tfoot>
  112. <tbody id="track_row_container">
  113. </tbody>
  114. </table>
  115. </div>
  116. <script>
  117. require([
  118. 'mage/template',
  119. 'prototype'
  120. ], function (mageTemplate) {
  121. //<![CDATA[
  122. trackingControl.template = mageTemplate('#track_row_template');
  123. //]]>
  124. });
  125. </script>