edit-headers.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief окно редактирования заголовков cron задачи
6  */
7 
8 isset($user) or require $_SERVER['DOCUMENT_ROOT'] . '/page/404.php';
9 
10 if (!($row = Wrong\Models\Crontabs::find($_GET['id']))) {
11  exit('<script>errorToast("Ошибка!");</script>');
12 }
13 
14 if ($row->method == 'CLI') {
15  exit('<script>errorToast("У CLI задач нельзя менять заголовки!");</script>');
16 }
17 
18 $headers = json_decode($row->headers);
20 foreach ($headers as $item) {
21  if (stripos($item, 'Content-Type:') !== false) {
22  $content_types[] = $item;
23  }
24 }
25 
26 $headers = array_filter($headers, function ($item) {
27  return stripos($item, 'Content-Type:') === false;
28 });
29 
30 ?>
31 <div class="modal fade" id="<?= $basename ?>" tabindex="-1" data-backdrop="static" data-keyboard="false">
32  <div class="modal-dialog modal-lg modal-dialog-centered" role="document">
33  <div class="modal-content">
34  <div class="modal-header">
35  <h5 class="modal-title">Изменить заголовки</h5>
36  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
37  <span aria-hidden="true">&times;</span>
38  </button>
39  </div>
40  <div class="modal-body">
41  <form action="<?= Wrong\Models\Actions::find(33)->request ?>">
42  <input type="hidden" name="id" value="<?= $row->id ?>">
43  <input type="hidden" name="table" value="<?= $_GET['table'] ?>">
44  <div class="input-group input-group-sm">
45  <div class="input-group-prepend w-50">
46  <span class="input-group-text w-100">Content-Type</span>
47  </div>
48  <select name="headers[]" class="custom-select">
49  <option value="">none</option>
50  <option value="Content-Type: application/x-www-form-urlencoded" <?= in_array('Content-Type: application/x-www-form-urlencoded', $content_types) ? 'selected' : '' ?>>application/x-www-form-urlencoded</option>
51  <option value="Content-Type: application/json; charset=utf-8" <?= in_array('Content-Type: application/json; charset=utf-8', $content_types) ? 'selected' : '' ?>>application/json; charset=utf-8</option>
52  </select>
53  </div>
54  <div class="input-group input-group-sm mt-2">
55  <div class="input-group-prepend w-50">
56  <span class="input-group-text w-100">Заголовки(опционально)</span>
57  </div>
58  <div class="flex-fill">
59  <?php foreach ($headers as $item) : ?>
60  <input type="text" name="headers[]" class="form-control form-control-sm" value="<?= $item ?>" placeholder="Key: value" autocomplete="off">
61  <?php endforeach; ?>
62  <?php if (!$headers) : ?>
63  <input type="text" name="headers[]" class="form-control form-control-sm" value="" placeholder="Key: value" autocomplete="off">
64  <?php endif; ?>
65  </div>
66  <div class="input-group-append">
67  <button title="Убрать крайнее поле" type="button" class="btn btn-danger rm-header" style="display:none;"><i class="fa fa-minus"></i></button>
68  <button title="Добавить ещё поле" type="button" class="btn btn-primary add-header"><i class="fa fa-plus"></i></button>
69  </div>
70  </div>
71  <button type="submit" class="btn btn-sm btn-block btn-success mt-3">Сохранить</button>
72  </form>
73  </div>
74  </div>
75  </div>
76  <script>
77  $("#<?= $basename ?> form").submit(function(e) {
78  lockSubmit($("#<?= $basename ?> form [type=submit]"));
79  e.preventDefault();
80  $.ajax({
81  type: "POST",
82  url: $(this).attr("action"),
83  data: $(this).serialize(),
84  dataType: "json",
85  statusCode: {
86  404: errorToast,
87  403: errorToast
88  }
89  })
90  .done(response => {
91  if (response.error) {
92  errorToast(response.error);
93  return;
94  }
95  $('.dataTable').DataTable().ajax.reload(null, false);
96  $('.toast').toast('hide');
97  successToast(response.message);
98  $("#<?= $basename ?>").modal("hide");
99  })
100  .always(() => {
101  unlockSubmit($("#<?= $basename ?> form [type=submit]"));
102  });
103  });
104 
105  $("#<?= $basename ?> .add-header").click(() => {
106  let input = $("#<?= $basename ?> [type='text'][name='headers[]']:last");
107  let clone = input.clone();
108  clone.val("");
109  input.after(clone);
110  $("#<?= $basename ?> .rm-header").show();
111  });
112 
113  $("#<?= $basename ?> .rm-header").click(() => {
114  if ($("#<?= $basename ?> [type='text'][name='headers[]']").length > 1) {
115  $("#<?= $basename ?> [type='text'][name='headers[]']:last").remove();
116  }
117  if ($("#<?= $basename ?> [type='text'][name='headers[]']").length == 1) {
118  $("#<?= $basename ?> .rm-header").hide();
119  }
120  });
121 
122  if ($("#<?= $basename ?> [type='text'][name='headers[]']").length > 1) {
123  $("#<?= $basename ?> .rm-header").show();
124  }
125  </script>
126 </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
if(($dbh=Connect::getInstance(true) ->dbh) && $dbh->query("SHOW TABLES") ->fetchAll() && $dbh->query("SELECT COUNT(*) FROM `users`") ->fetchColumn()) if(!empty($_POST)) exit
Definition: install.php:198
if($user->access() ->page('/system')) if(Wrong\Start\Env::$e->GOOGLE_OAUTH_CLIENT_SECRET||Wrong\Start\Env::$e->YANDEX_OAUTH_CLIENT_SECRET)(Wrong\Start\Env::$e->GOOGLE_OAUTH_CLIENT_SECRET) if(Wrong\Start\Env::$e->YANDEX_OAUTH_CLIENT_SECRET) endif
Definition: sign-in.php:59
if(!($row=Wrong\Models\Crontabs::find($_GET['id']))) if($row->method=='CLI') $headers
$content_types