migration-list.tpl 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <ul class="breadcrumb">
  2. <li><a href="addonmodules.php?module=DNSManager2"><i class="fa fa-home"></i></a></li>
  3. <li><a {*href="addonmodules.php?module=DNSManager2&mg-page=tools&mg-action=migration"*} data-act="migration">{$MGLANG->absoluteT('addonAA', 'pagesLabels', 'tools', 'migration')}</a></li>
  4. <li class="active">{$MGLANG->absoluteT('addonAA', 'pagesLabels', 'tools', 'migration')} #{$migrationid}</li>
  5. </ul>
  6. <table class="table table-striped" id="migration-list">
  7. <thead>
  8. <tr>
  9. <th><div class="checkbox"><input type="checkbox" class="select_all"/><input type="hidden" name="id" value="{$migrationid}" /></div></th>
  10. <th>{$MGLANG->T('zone')}</th>
  11. <th>{$MGLANG->T('ip')}</th>
  12. <th>{$MGLANG->T('status')}</th>
  13. <th></th>
  14. </tr>
  15. </thead>
  16. <tbody>
  17. </tbody>
  18. </table>
  19. <div class="well">
  20. <a class="btn btn-primary btn-inverse" data-act="migrateZones" data-formid="migration-list" data-dt="1" data-query="id={$migrationid}">{$MGLANG->T('migrate_zones')}</a>
  21. </div>
  22. {literal}
  23. <script data-cfasync="false" type="text/javascript">
  24. var checkedInputsArr = [];
  25. function migrateZonesCallback(data, $obj) {
  26. jQuery('#migration-list').DataTable().ajax.reload();
  27. }
  28. function setRowsID(setting) {
  29. $('#migration-list :checkbox.select_all').prop('checked', false).iCheck('update');
  30. $('#migration-list tbody tr').each( function(){
  31. var id = $(this).find('.row-id').data('id');
  32. $(this).attr('id', id);
  33. });
  34. try {
  35. $(".mg-wrapper select.select2").select2({
  36. containerCssClass: ' tpx-select2-container',
  37. dropdownCssClass: ' tpx-select2-drop'
  38. });
  39. } catch(e) {}
  40. $(".mg-wrapper .checkbox input[type='checkbox']").iCheck({
  41. checkboxClass: 'checkbox-styled',
  42. radioClass: 'radio-styled',
  43. increaseArea: '20%'
  44. });
  45. var table = jQuery('#migration-list').DataTable();
  46. $('.select_all').on('ifChanged', function() {
  47. $(':checkbox', table.rows().nodes()).prop('checked', this.checked).iCheck('update');
  48. });
  49. $(':checkbox', table.rows().nodes()).change(function() {
  50. $('#migration-list :checkbox.select_all').prop('checked', $(':checkbox:not(:checked)', table.rows().nodes()).length == 0).iCheck('update');
  51. });
  52. }
  53. function checkZones() {
  54. $.each(checkedInputsArr, function(index, value){
  55. $('input[name="' + value + '"]').iCheck('check');
  56. });
  57. }
  58. function checkedZones() {
  59. $('.checkbox-styled').each(function(){
  60. var inputName = $(this.children[0]).attr('name');
  61. if($(this).hasClass('checked')) {
  62. if(!checkIfArrContains(inputName))
  63. {
  64. checkedInputsArr.push(inputName);
  65. }
  66. } else {
  67. if(checkIfArrContains(inputName))
  68. {
  69. const index = checkedInputsArr.indexOf(inputName);
  70. if (index > -1) {
  71. checkedInputsArr.splice(index, 1);
  72. }
  73. }
  74. }
  75. });
  76. }
  77. function checkIfArrContains(name){
  78. return checkedInputsArr.includes(name);
  79. }
  80. jQuery(document).ready(function(){
  81. var last;
  82. jQuery('#migration-list').dataTable({
  83. drawCallback: setRowsID,
  84. serverSide: true,
  85. //searching: false,
  86. searchDelay: 800,
  87. autoWidth: false,
  88. ordering: false,
  89. ajax: function(data, callback, settings){
  90. checkedZones();
  91. if(last != data.length) {
  92. last = data.length;
  93. data.start = 0;
  94. jQuery('#migration-list').DataTable().page(1);
  95. }
  96. last = data.length;
  97. var filters = $('#table-filters :input').serializeArray();
  98. JSONParser.request(
  99. 'refreshMigrationTable'
  100. , $.merge(filters, [
  101. //{name: 'order[column]', value: data.columns[data.order[0].column].name},
  102. //{name: 'order[dir]', value: data.order[0].dir},
  103. {name: 'limit', value: data.length},
  104. {name: 'offset', value: data.start},
  105. {name: 'search', value: data.search.value},
  106. {name: 'id', value: {/literal}{$migrationid}{literal}},
  107. ])
  108. , function(data) {
  109. callback(data);
  110. jQuery('.mg-wrapper [title]').bstooltip();
  111. addCustomPagination('migration-list', 1);
  112. checkZones();
  113. }
  114. );
  115. },
  116. columns: [
  117. { orderable: false, targets: 0}
  118. ,{ orderable: false, targets: 0}
  119. ,{ orderable: false, targets: 0}
  120. ,{ orderable: false, targets: 0}
  121. ,{ orderable: false, targets: 0}
  122. ],
  123. pagingType: "simple_numbers",
  124. aLengthMenu: [
  125. [5, 10, 25, 50, 75, 100],
  126. [5, 10, 25, 50, 75, 100]
  127. ],
  128. iDisplayLength: 10,
  129. //sDom: 't<"table-bottom"<"row"<"col-sm-6"p><"col-sm-6"L>>>',
  130. "oLanguage": {
  131. "oPaginate" : {
  132. "sNext": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sNext')}{literal}",
  133. "sFirst": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sFirst')}{literal}",
  134. "sLast ": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sLast')}{literal}",
  135. "sPrevious": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sPrevious')}{literal}",
  136. },
  137. "sEmptyTable": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sEmptyTable')}{literal}",
  138. "sPrevious": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sPrevious')}{literal}",
  139. "sNext": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sNext')}{literal}",
  140. "sZeroRecords": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sZeroRecords')}{literal}",
  141. "sInfoEmpty": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfoEmpty')}{literal}",
  142. "sSearch": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sSearch')}{literal}",
  143. "sLengthMenu": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sLengthMenu')}{literal}",
  144. "sInfoFiltered": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfoFiltered')}{literal}",
  145. "sInfo": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfo')}{literal}",
  146. }
  147. });
  148. });
  149. </script>
  150. {/literal}