add-zone.tpl 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <div class="modal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
  2. <div class="modal-dialog">
  3. <div class="modal-content">
  4. <form class="form-horizontal" action="" method="post" id="zone_form">
  5. <input type="hidden" name="dnsaction" value="createzone" />
  6. <div class="modal-header">
  7. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">{$MGLANG->T('close')}</span></button>
  8. <h4 class="modal-title">{$MGLANG->T('add_dns_zone')}</h4>
  9. </div>
  10. <div class="modal-body">
  11. <div id="create_zone_area">
  12. <div class="form-group">
  13. <label class="control-label col-sm-3">{$MGLANG->T('zone_client')}</label>
  14. <div class="col-sm-7">
  15. <input type="hidden" class="select2x"
  16. {if $currentId} value="{$currentId}|{$currentClient}" data-act=""{else} {/if} />
  17. <input type="hidden" name="client" data-act="getClientServices" data-do-not-close-the-modal="" data-no-validate="1" value=""/>
  18. </div>
  19. </div>
  20. <div class="form-group">
  21. <label class="control-label col-sm-3">{$MGLANG->T('zone_service')}</label>
  22. <div class="col-sm-7">
  23. <select class="select2" id="si1" name="relateditem">
  24. {foreach from=$items item="item"}
  25. <option value="{$item.type}|{$item.relid}" {if (isset($relateditem) && $item.relid == $relateditem.relid && $item.type == $relateditem.type)}selected{/if} data-act="getClientServices" data-do-not-close-the-modal="" data-no-validate="1" >{$item.name}</option>
  26. {/foreach}
  27. </select>
  28. </div>
  29. </div>
  30. {*<div class="form-group">*}
  31. {*<label class="control-label col-sm-3">{$MGLANG->T('zone_name')}</label>*}
  32. {*<div class="col-sm-7">*}
  33. {*<input class="form-control" type="text" name="zone_name" value="" required pattern="(.*\.)+.+" *}{*pattern="{literal}^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}{/literal}"*}{*/>*}
  34. {*</div>*}
  35. {*</div>*}
  36. {if $zoneDomainItems == 'allowCustomDomain'}
  37. <div class="form-group">
  38. <label class="control-label col-sm-3">{$MGLANG->T('zone_name')}</label>
  39. <div class="col-sm-7">
  40. <input class="form-control" type="text" name="zone_name" value="" required pattern="(.*\.)+.+" pattern="{literal}^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}{/literal}"/>
  41. </div>
  42. </div>
  43. {else}
  44. <div class="form-group">
  45. <label class="control-label col-sm-3">{$MGLANG->T('zone_name')}</label>
  46. <div class="col-sm-7">
  47. <select class="select2" id="si1" name="zone_name">
  48. {foreach from=$zoneDomainItems item="item"}
  49. <option value="{$item}" >{$item}</option>
  50. {/foreach}
  51. </select>
  52. </div>
  53. </div>
  54. {/if}
  55. <div class="form-group">
  56. <label class="control-label col-sm-3">{$MGLANG->T('ip')}</label>
  57. <div class="col-sm-7">
  58. {if !empty($items[0]['ips_available']) && $items[0]['ips_available'][0] != null}
  59. <select class="select2" name="zone_ip">
  60. {foreach from=$items[0]['ips_available'] item="ip"}
  61. {if !in_array($ip,$items[0]['ip_blacklist'])}
  62. <option value="{$ip}">{$ip}</option>
  63. {/if}
  64. {/foreach}
  65. </select>
  66. {else}
  67. <input class="form-control" type="text" name="zone_ip" value="{$defaultIP}" pattern="{$patterns.ip}"/>
  68. {/if}
  69. </div>
  70. </div>
  71. <div class="form-group block-ip" {if count($pools) eq 0}style="display: none"{/if}>
  72. <label class="control-label col-sm-3">{$MGLANG->T('ip')}</label>
  73. <div class="col-sm-7">
  74. <input class="form-control" type="text" name="zone_ip_from_block" value="" required pattern="{$patterns.ip}"/>
  75. </div>
  76. </div>
  77. <div class="form-group">
  78. <label class="control-label col-sm-3">{$MGLANG->T('selectRecordSet')}</label>
  79. <div class="col-sm-7">
  80. <select class="select2" name="recordSet">
  81. <option value="none" >{$MGLANG->T('none')}</option>
  82. {foreach from=$sets item="aset"}
  83. <option value="{$aset->id}">{$aset->name}</option>
  84. {/foreach}
  85. <option value="" selected >{$MGLANG->T('defaultSet')}</option>
  86. </select>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="modal-footer">
  92. <button type="button" class="btn btn-default btn-inverse" data-dismiss="modal">{$MGLANG->T('cancel')}</button>
  93. <button type="button" class="btn btn-success btn-inverse" data-act="addZoneSave">{$MGLANG->T('add_zone')}</button>
  94. </div>
  95. </form>
  96. </div>
  97. </div>
  98. </div>
  99. {literal}
  100. <script data-cfasync="false" type="text/javascript">
  101. (function ($) {
  102. $('[name=zone_ip]').change(function () {
  103. $(this).parents('form').first().find('.block-ip').removeClass('has-error').toggle(typeof $('option:selected', this).data('pool') != 'undefined');
  104. });
  105. try {
  106. $(".mg-wrapper .select2x").select2({
  107. placeholder: "Search for a client",
  108. minimumInputLength: 1,
  109. containerCssClass: ' tpx-select2-container',
  110. dropdownCssClass: ' tpx-select2-drop',
  111. formatResult: createOption,
  112. formatSelection: createSelection,
  113. initSelection: initSelection,
  114. ajax: {
  115. url: "addonmodules.php?module=DNSManager2&mg-page=tools&mg-action=getClientsList&json=1",
  116. dataType: 'json',
  117. quietMillis: 250,
  118. data: function (term, page) {
  119. return {
  120. q: term, // search term
  121. page: page,
  122. };
  123. },
  124. results: function (data, page) {
  125. page = page || 1;
  126. return {
  127. results: data.response.items,
  128. more: (page * 30) < data.response.total
  129. };
  130. },
  131. cache: true
  132. },
  133. });
  134. } catch (e) {
  135. }
  136. })(jQuery);
  137. function createOption(object, container) {
  138. return "#" + object.id + " " + object.name;
  139. }
  140. var selectedObject;
  141. function createSelection(object, container) {
  142. if(object.id){
  143. var $el = $(this.element);
  144. var $next = $el.next();
  145. $next.val(object.id+'|'+object.name);
  146. $next.trigger('click');
  147. selectedObject = object;
  148. return "#" + object.id + " " + object.name;
  149. }else{
  150. $('input[name="client"').val(selectedObject.id + "|" + selectedObject.name);
  151. return "#" + selectedObject.id + " " + selectedObject.name;
  152. }
  153. }
  154. function initSelection(element, callback) {
  155. callback({id: $(element).data('id'), name: $(element).data('name') });
  156. }
  157. </script>
  158. {/literal}