feat: add "save as file" checkbox

This commit is contained in:
Rekryt
2024-10-28 13:56:09 +03:00
parent 198e13d788
commit 2e722a9ac9
3 changed files with 13 additions and 1 deletions

View File

@@ -29,7 +29,7 @@ abstract class AbstractController implements ControllerInterface {
abstract public function getBody(): string; abstract public function getBody(): string;
public function setHeaders(array $headers): AbstractController { public function setHeaders(array $headers): AbstractController {
$this->headers = $headers; $this->headers = array_merge($this->headers ?? [], $headers);
return $this; return $this;
} }

View File

@@ -27,6 +27,12 @@ abstract class AbstractIPListController extends AbstractController {
$this->logger = App::getLogger(); $this->logger = App::getLogger();
$this->service = IPListService::getInstance(); $this->service = IPListService::getInstance();
$isFileSave = !!($this->request->getQueryParameter('filesave') ?? '');
if ($isFileSave) {
$ext = in_array($this->request->getQueryParameter('format'), ['json', 'amnezia']) ? 'json' : 'txt';
$this->setHeaders(['content-disposition' => 'attachment; filename="ip-list.' . $ext . '"']);
}
} }
/** /**

View File

@@ -591,6 +591,7 @@ use OpenCCK\App\Controller\MainController;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: center; justify-content: center;
margin-bottom: 10px;
} }
.main-formItemComment { .main-formItemComment {
flex: 0 0 100%; flex: 0 0 100%;
@@ -611,6 +612,7 @@ use OpenCCK\App\Controller\MainController;
line-height: 1; line-height: 1;
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
cursor: pointer;
} }
</style> </style>
</head> </head>
@@ -664,6 +666,10 @@ use OpenCCK\App\Controller\MainController;
<input class="main-formItemCheckbox" type="checkbox" name="wildcard" value="1" /> <input class="main-formItemCheckbox" type="checkbox" name="wildcard" value="1" />
<span class="main-formItemCheckboxLabel">Only wildcard domains</span> <span class="main-formItemCheckboxLabel">Only wildcard domains</span>
</label> </label>
<label class="main-formItem main-formItem_wide">
<input class="main-formItemCheckbox" type="checkbox" name="filesave" value="1" />
<span class="main-formItemCheckboxLabel">Save as file</span>
</label>
</section> </section>
<section> <section>
<button type="submit">Submit</button> <button type="submit">Submit</button>