backups.tpl 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <ul class="breadcrumb">
  2. <li><a href="addonmodules.php?module=DNSManager2"><i class="fa fa-home"></i></a></li>
  3. <li class="active">{$MGLANG->absoluteT('addonAA', 'pagesLabels', 'tools', 'backupsList')}</li>
  4. </ul>
  5. <div class="panel panel-primary">
  6. <div class="panel-heading">
  7. <h3 class="panel-title">{$MGLANG->T('backupsTasks')}</h3>
  8. </div>
  9. <div class="panel-body">
  10. <table class="table table-hover table-striped" id="backupsTasksList">
  11. <thead>
  12. <tr>
  13. <th>{$MGLANG->T('taskDescription')}</th>
  14. <th>{$MGLANG->T('zones_procesed_total')}</th>
  15. <th>{$MGLANG->T('progress')}</th>
  16. <th></th>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. {foreach from=$backupsTasks item="backupTask"}
  21. <tr>
  22. <td>{$backupTask.parsedDesc.0}<b>{$backupTask.parsedDesc.1}</b>{if $backupTask.parsedDesc.2}{$backupTask.parsedDesc.2}<b>{$backupTask.parsedDesc.3}</b>{/if}</td>
  23. <td>{$backupTask.zones_imported}/{$backupTask.zones_total}</td>
  24. <td>
  25. {if $backupTask.error neq false}
  26. {$backupTask.error}
  27. {elseif $backupTask.progress < 0}
  28. {$MGLANG->T('fetching_list')}
  29. {else}
  30. <div class="progress" style="margin-bottom: 0px;">
  31. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="{$backupTask.progress}" aria-valuemin="0" aria-valuemax="100" style="width: {$backupTask.progress}%;">{$backupTask.progress}%</div>
  32. </div>
  33. {/if}
  34. </td>
  35. <td>
  36. {if $backupTask.progress >= 0 && $backupTask.error eq false}
  37. <a class="btn btn-primary btn-inverse btn-icon-only" data-act="{if $backupTask.type === 'importToFIle'}showListImportToFile{else}showListExport{/if}" data-query="id={$backupTask.id}" title="{$MGLANG->T('show_list')}"><i class="fa fa-edit"></i></a>
  38. {/if}
  39. <a class="btn btn-primary btn-inverse btn-icon-only" data-act="{if $backupTask.type === 'importToFIle'}backupScheduleImport{else}backupScheduleExport{/if}" data-query="id={$backupTask.id}" data-confirm-body="{if $backupTask.type === 'importToFIle'}{$MGLANG->T('schedule_import_confirmation')}{else}{$MGLANG->T('scheduleExportConfirmation')}{/if}" title="{$MGLANG->T('scheduleTask')}"><i class="fa fa-play"></i></a>
  40. <a class="btn btn-danger btn-inverse btn-icon-only" data-act="backupRemoveTask" data-confirm-body="{if $backupTask.type === 'importToFIle'}{$MGLANG->T('remove_import_confirmation')}{else}{$MGLANG->T('removeExportConfirmation')}{/if}" data-query="id={$backupTask.id}" title="{$MGLANG->T('cancel')}"><i class="fa fa-remove"></i></a>
  41. </td>
  42. </tr>
  43. {foreachelse}
  44. <tr><td colspan="4" align="center">{$MGLANG->T('there_are_no_backup_tasks')}</td></tr>
  45. {/foreach}
  46. </tbody>
  47. </table>
  48. </div>
  49. </div>
  50. <div class="panel panel-primary">
  51. <div class="panel-heading">
  52. <h3 class="panel-title">{$MGLANG->T('backupsList')}</h3>
  53. </div>
  54. <div class="panel-body">
  55. <table class="table table-hover table-striped" id="backupsList">
  56. <thead>
  57. <tr>
  58. <th>{$MGLANG->T('fileName')}</th>
  59. <th>{$MGLANG->T('client')}</th>
  60. <th>{$MGLANG->T('exportType')}</th>
  61. <th class="action-cell"></th>
  62. </tr>
  63. </thead>
  64. <tbody>
  65. </tbody>
  66. </table>
  67. <div class="well well-sm">
  68. <a class="btn btn-success btn-inverse" data-act="addBackupFile">{$MGLANG->T('uploadFile')}</a>
  69. <a class="btn btn-info btn-inverse" data-act="addExportToFIle">{$MGLANG->T('addExportToFile')}</a>
  70. </div>
  71. </div>
  72. </div>
  73. {literal}
  74. <script data-cfasync="false" type="text/javascript">
  75. jQuery(document).ready(function(){
  76. var last;
  77. jQuery('#table-filters').change(function() {
  78. jQuery('#backupsList').DataTable().ajax.reload();
  79. });
  80. jQuery('#backupsList').dataTable({
  81. drawCallback: replaceEmptyRowDataTable,
  82. serverSide: true,
  83. searchDelay: 800,
  84. autoWidth: false,
  85. ajax: function(data, callback, settings){
  86. if(last != data.length) {
  87. last = data.length;
  88. data.start = 0;
  89. jQuery('#backupsList').DataTable().page(0);
  90. }
  91. last = data.length;
  92. var filters = $('#table-filters :input').serializeArray();
  93. JSONParser.request(
  94. 'refreshBackupsTable'
  95. , $.merge(filters, [
  96. {name: 'order[column]', value: data.columns[data.order[0].column].name},
  97. {name: 'order[dir]', value: data.order[0].dir},
  98. {name: 'limit', value: data.length},
  99. {name: 'offset', value: data.start},
  100. {name: 'search', value: data.search.value},
  101. ])
  102. , function(data) {
  103. callback(data);
  104. jQuery('.mg-wrapper [title]').bstooltip();
  105. addCustomPagination('backupsList', 0);
  106. }
  107. );
  108. },
  109. columns: [
  110. {name: 'name'},
  111. {orderable: false, name: 'client'},
  112. {orderable: false, name: 'type'},
  113. {orderable: false, targets: 0}
  114. ],
  115. // order: [[0, "desc"]],
  116. pagingType: "simple_numbers",
  117. aLengthMenu: [
  118. [5, 10, 25, 50, 75, 100],
  119. [5, 10, 25, 50, 75, 100]
  120. ],
  121. iDisplayLength: 10,
  122. "oLanguage": {
  123. "oPaginate" : {
  124. "sNext": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sNext')}{literal}",
  125. "sFirst": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sFirst')}{literal}",
  126. "sLast ": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sLast')}{literal}",
  127. "sPrevious": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sPrevious')}{literal}",
  128. },
  129. "sEmptyTable": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sEmptyTable')}{literal}",
  130. "sPrevious": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sPrevious')}{literal}",
  131. "sNext": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sNext')}{literal}",
  132. "sZeroRecords": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sZeroRecords')}{literal}",
  133. "sInfoEmpty": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfoEmpty')}{literal}",
  134. "sSearch": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sSearch')}{literal}",
  135. "sLengthMenu": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sLengthMenu')}{literal}",
  136. "sInfoFiltered": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfoFiltered')}{literal}",
  137. "sInfo": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfo')}{literal}"
  138. }
  139. });
  140. });
  141. </script>
  142. {/literal}