main.tpl 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  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', 'zones', 'label')}</li>
  4. </ul>
  5. <div id="table-filters" class="hide">
  6. <select name="filter[serverid]">
  7. <option value="">{$MGLANG->T('none')}</option>
  8. {foreach from=$servers item="server"}
  9. <option value="{$server->id}">{$server->name}</option>
  10. {/foreach}
  11. </select>
  12. </div>
  13. <table class="table table-hover table-striped" id="zonelist">
  14. <thead>
  15. <tr>
  16. <th style="width:0px"><div class="checkbox" id="select_all"><input type="checkbox" class="select_all"/><input type="hidden" name="id"/></div></th>
  17. <th>{$MGLANG->T('table','name')}</th>
  18. <th>{$MGLANG->T('table','client')}</th>
  19. <th>{$MGLANG->T('table','type')}</th>
  20. <th>{$MGLANG->T('table','server')}</th>
  21. <th>{$MGLANG->T('table','status')}</th>
  22. <th class="action-cell"></th>
  23. </tr>
  24. </thead>
  25. <tbody>
  26. </tbody>
  27. </table>
  28. <div class="well">
  29. <button style="margin-left: 10px;" class="btn btn-success btn-inverse" type="button" data-act="addZone">{$MGLANG->T('add_zone')}</button>
  30. <button style="margin-left: 10px;" class="btn btn-primary btn-inverse" type="button" data-formid="zonelist" data-dt="1" data-act="setRecords">{$MGLANG->T('set_dns_record_set')}</button>
  31. <span id="massRemoveButton" class="hidden">
  32. <button style="margin-left: 10px;" class="btn btn-danger btn-inverse" type="button" data-formid="zonelist" data-dt="1" data-act="massRemoveZones">{$MGLANG->T('delete_selected')}</button>
  33. <button style="margin-left: 10px;" class="btn btn-danger btn-inverse" type="button" data-formid="zonelist" data-dt="1" data-act="massRemoveZonesFromWHMCS">{$MGLANG->T('remove_from_whmcs_selected')}</button>
  34. </span>
  35. </div>
  36. {literal}
  37. <script data-cfasync="false" type="text/javascript">
  38. MGVONLYEDITED = true;
  39. function toggleActionButtons(status){
  40. if(status === true){
  41. $('#massRemoveButton').removeClass('hidden');
  42. }else{
  43. $('#massRemoveButton').addClass('hidden');
  44. }
  45. }
  46. jQuery('#select_all').change(function(){
  47. jQuery('input[type="checkbox"]').prop('checked',$("#select_all :input")[0].checked).iCheck('update');
  48. toggleActionButtons($("#select_all :input")[0].checked);
  49. });
  50. jQuery(document).ready(function(){
  51. var last;
  52. jQuery('#table-filters').change(function() {
  53. jQuery('#zonelist').DataTable().ajax.reload();
  54. });
  55. function fixCheckBoxes()
  56. {
  57. $(".mg-wrapper .checkbox input[type='checkbox']").iCheck({
  58. checkboxClass: 'checkbox-styled',
  59. radioClass: 'radio-styled',
  60. increaseArea: '20%'
  61. });
  62. $('input[name*="zone[checked]"]').change(function(){
  63. var select_all = true;
  64. var checkboxes = $('input[name*="zone[checked]"]');
  65. var checkedNumers = 0;
  66. checkboxes.each(function(key,val){
  67. if(val.checked == false)
  68. {
  69. select_all = false;
  70. }else{
  71. checkedNumers++
  72. }
  73. });
  74. if(!select_all)
  75. {
  76. jQuery('input[class="select_all"]').prop('checked',false).iCheck('update');
  77. }
  78. else
  79. {
  80. jQuery('input[class="select_all"]').prop('checked',true).iCheck('update');
  81. }
  82. if(checkedNumers > 0){
  83. toggleActionButtons(true);
  84. }
  85. else{
  86. toggleActionButtons(false);
  87. }
  88. });
  89. replaceEmptyRowDataTable();
  90. }
  91. $('#MGModal').on('hidden.bs.modal', function(){
  92. fixCheckBoxes();
  93. });
  94. jQuery('#zonelist').dataTable({
  95. drawCallback:fixCheckBoxes,
  96. serverSide: true,
  97. info: true,
  98. // searching: true,
  99. searchDelay: 800,
  100. autoWidth: false,
  101. ajax: function(data, callback, settings){
  102. if(last != data.length) {
  103. last = data.length;
  104. data.start = 0;
  105. jQuery('#zonelist').DataTable().page(0);
  106. }
  107. last = data.length;
  108. var filters = $('#table-filters :input').serializeArray();
  109. JSONParser.request(
  110. 'refreshZonesTable'
  111. , $.merge(filters, [
  112. {name: 'order[column]', value: data.columns[data.order[0].column].name},
  113. {name: 'order[dir]', value: data.order[0].dir},
  114. {name: 'limit', value: data.length},
  115. {name: 'offset', value: data.start},
  116. {name: 'search', value: data.search.value},
  117. ])
  118. , function(data) {
  119. callback(data);
  120. jQuery('.mg-wrapper [title]').bstooltip();
  121. }
  122. );
  123. },
  124. columns: [
  125. {orderable:false, name: 'check'}
  126. ,{name: 'name'}
  127. ,{name: 'client'}
  128. ,{orderable: false, name: 'type'}
  129. ,{name: 'server_name'}
  130. ,{name: 'status'}
  131. ,{ orderable: false, targets: 0}
  132. ],
  133. order: [[4, "desc"]],
  134. pagingType: "simple_numbers",
  135. aLengthMenu: [
  136. [5, 10, 25, 50, 75, 100],
  137. [5, 10, 25, 50, 75, 100]
  138. ],
  139. iDisplayLength: 10,
  140. //sDom: 't<"table-bottom"<"row"<"col-sm-6"p><"col-sm-6"L>>>',
  141. "oLanguage": {
  142. "oPaginate" : {
  143. "sNext": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sNext')}{literal}",
  144. "sFirst": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sFirst')}{literal}",
  145. "sLast ": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sLast')}{literal}",
  146. "sPrevious": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sPrevious')}{literal}",
  147. },
  148. "sEmptyTable": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sEmptyTable')}{literal}",
  149. "sPrevious": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sPrevious')}{literal}",
  150. "sNext": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sNext')}{literal}",
  151. "sZeroRecords": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sZeroRecords')}{literal}",
  152. "sInfoEmpty": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfoEmpty')}{literal}",
  153. "sSearch": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sSearch')}{literal}",
  154. "sLengthMenu": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sLengthMenu')}{literal}",
  155. "sInfoFiltered": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfoFiltered')}{literal}",
  156. "sInfo": "{/literal}{$MGLANG->absoluteT('addonAA','datatables','sInfo')}{literal}",
  157. },
  158. });
  159. });
  160. </script>
  161. {/literal}
  162. {literal}
  163. <script data-cfasync="false" type="text/javascript">
  164. function refreshTable() {
  165. jQuery('#zonelist').DataTable().ajax.reload();
  166. //jQuery('#zonelist').DataTable().draw();
  167. }
  168. function showinfo() {
  169. if($('.dataTables_empty').length > 0)
  170. {
  171. jQuery('#zonelist').DataTable().info = false;
  172. }
  173. jQuery('#zonelist').DataTable().info = true;
  174. }
  175. function synchronizeZoneCallback(data, $obj) {refreshTable();}
  176. function createZoneCallback(data, $obj) {refreshTable();}
  177. function removeZoneFromWHMCSCallback(data, $obj) {refreshTable();}
  178. function removeZoneCallback(data, $obj) {refreshTable();}
  179. function switchRelatedItemSaveCallback(data, $obj) {refreshTable();}
  180. function addNewRecordCallback(data, $obj) {
  181. if(!data.new_record) return false;
  182. //$obj.parents('form').first().find('.zone-records table tbody').append(data.new_record);
  183. // $obj.parent().children('[name=records_counter]').val(parseInt($obj.parent().children('[name=records_counter]').val()) + 1);
  184. $obj.parents('form').first().find('.new-record').show();
  185. $obj.parents('form').first().find('.new-record table tbody').html(data.new_record);
  186. $obj.parents('form').first().find('.new-record-select').hide();
  187. $obj.parent().children('[name=records_counter]').val(parseInt($obj.parent().children('[name=records_counter]').val()) + 1);
  188. }
  189. (function() {
  190. $(document).ready(function() {
  191. $(document).delegate(".zone-records table tbody [name^='record']", 'keydown change', function() {
  192. $(this).parents('tr').find(':input').attr('name', function() {
  193. if(this.name.indexOf('edit_') !== 0)
  194. return 'edit_' + this.name;
  195. return this.name;
  196. });
  197. });
  198. $(document).delegate(".cancel-add-record", 'click', function() {
  199. var $form = $(this).parents('form').first();
  200. $form.find('.new-record-select').show();
  201. $form.find('.new-record').hide();
  202. });
  203. });
  204. })(jQuery);
  205. </script>
  206. {/literal}