construct-modal.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief окно контсруктора триггера вызова модальных окон
6  */
7 
8 isset($user) or require $_SERVER['DOCUMENT_ROOT'] . '/page/404.php';
9 $name = htmlspecialchars($_GET['name'], ENT_QUOTES);
10 
11 ?>
12 <div class="modal fade" id="<?= $basename ?>" tabindex="-1" data-backdrop="static" data-keyboard="false">
13  <div class="modal-dialog modal-lg modal-dialog-centered" role="document">
14  <div class="modal-content">
15  <div class="modal-header">
16  <h5 class="modal-title"><i class="fa fa-cubes"></i> Конструктор триггера модального окна</h5>
17  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
18  <span aria-hidden="true">&times;</span>
19  </button>
20  </div>
21  <div class="modal-body">
22  <form onsubmit="return false;">
23  <div class="input-group input-group-sm">
24  <div class="input-group-prepend w-50">
25  <span class="input-group-text w-100">Тип тега</span>
26  </div>
27  <select name="tag" class="custom-select">
28  <option value="a">&lt;a&gt;</option>
29  <option value="button">&lt;button&gt;</option>
30  <option value="div">&lt;div&gt;</option>
31  </select>
32  </div>
33  <div class="input-group input-group-sm mt-2">
34  <div class="input-group-prepend w-50">
35  <span class="input-group-text w-100">Анкор</span>
36  </div>
37  <input type="text" name="anchor" class="form-control" value="Кнопка" placeholder="Анкор" autocomplete="off">
38  </div>
39  <div class="input-group input-group-sm mt-2">
40  <div class="input-group-prepend w-50">
41  <span class="input-group-text w-100">Целевое окно</span>
42  </div>
43  <input type="text" name="name" class="form-control" value="#<?= $name ?>" placeholder="Имя действия" autocomplete="off" readonly>
44  </div>
45  <div class="input-group input-group-sm mt-2">
46  <div class="input-group-prepend w-50">
47  <span class="input-group-text w-100">Callback функция</span>
48  </div>
49  <input type="text" name="callback" class="form-control" value="" placeholder="" autocomplete="off">
50  </div>
51  <ul class="rounded bg-light-info border small mt-2 p-2 pl-4 mb-0">
52  <li>Можно добавить любые data-* аттрибуты, они все будут переданы в $_GET[*] переменных на скрипт обработчик</li>
53  <li>Если задана callback функция - она будет вызвана после добавления модального окна в DOM</li>
54  </ul>
55  <div class="position-relative">
56  <textarea name="result-button" class="mt-2 form-control p-1" rows="1" style="font-size:14px;"></textarea>
57  <a style="position:absolute;top:0;right:4px;" title="Копировать код" href="#"><i class="fa fa-copy" aria-hidden="true"></i></a>
58  </div>
59  <div class="position-relative" style="display:none;">
60  <textarea name="result-function" class="mt-2 form-control p-1" rows="7" style="font-size:14px;"></textarea>
61  <a style="position:absolute;top:0;right:4px;" title="Копировать код" href="#"><i class="fa fa-copy" aria-hidden="true"></i></a>
62  </div>
63  </form>
64 
65  </div>
66  </div>
67  </div>
68  <script>
69  $(function() {
70  function construct() {
71  let action = $('#<?= $basename ?> [name=name]').val().trim();
72  let code = $('<a class="btn btn-primary" data-toggle="modal" data-target="' + action + '"></a>');
73  let anchor = $('#<?= $basename ?> [name=anchor]').val().trim();
74  code.html(anchor);
75  let callback = $('#<?= $basename ?> [name=callback]').val().trim();
76  $('#<?= $basename ?> [name=result-function]').val('');
77  if (callback) {
78  code.attr('data-callback', callback);
79  $('#<?= $basename ?> [name=result-function]').val('function ' + callback + '() {\n $("#<?= $name ?> .modal-header").html("Replaced header");\n}');
80  $('#<?= $basename ?> [name=result-function]').parent().slideDown();
81  } else {
82  $('#<?= $basename ?> [name=result-function]').parent().slideUp();
83  }
84 
85  code = code[0].outerHTML;
86  let tag = $('#<?= $basename ?> [name=tag]').val();
87  code = code.replace(/^<[a-z]+/, '<' + tag);
88  code = code.replace(/[a-z]+>$/, tag + '>');
89 
90  $('#<?= $basename ?> [name=result-button]').val(code);
91  $('#<?= $basename ?> [name=result-button]').css({
92  'height': 'auto'
93  });
94  $('#<?= $basename ?> [name=result-button]').css({
95  'height': ($('#<?= $basename ?> [name=result-button]')[0].scrollHeight + 3) + 'px'
96  });
97 
98  }
99 
100  $('#<?= $basename ?> form').on('input keyup', construct);
101  setTimeout(() => {
102  $('#<?= $basename ?> form').trigger('keyup');
103  }, 300);
104 
105  $('#<?= $basename ?> textarea').next().click(function(e) {
106  e.preventDefault();
107  $(this).prev().focus();
108  $(this).prev().select();
109  document.execCommand('copy', false);
110  successToast('Скопировано в буфер');
111  setTimeout(() => {
112  window.getSelection().removeAllRanges();
113  }, 500);
114  });
115  });
116  </script>
117 </div>
$user
Definition: from-user.php:38
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
Definition: from-user.php:36
href
Definition: main.php:21