feat: checkbox for only wildcard domains

This commit is contained in:
Rekryt
2024-09-03 20:11:08 +03:00
parent c89cb6b4b3
commit 2169ca6b84
7 changed files with 49 additions and 8 deletions

View File

@@ -6,6 +6,7 @@ use Amp\ByteStream\BufferException;
use Amp\Http\Server\Request;
use OpenCCK\App\Service\IPListService;
use OpenCCK\Domain\Entity\Site;
use OpenCCK\Infrastructure\API\App;
use Monolog\Logger;
@@ -32,4 +33,16 @@ abstract class AbstractIPListController extends AbstractController {
* @return string
*/
abstract public function getBody(): string;
/**
* @return array<string, Site>
*/
protected function getSites(): array {
$wildcard = !!($this->request->getQueryParameter('wildcard') ?? '');
return array_map(static function (Site $siteEntity) use ($wildcard) {
$site = clone $siteEntity;
$site->domains = $siteEntity->getDomains($wildcard);
return $site;
}, $this->service->sites);
}
}

View File

@@ -16,9 +16,9 @@ class JsonController extends AbstractIPListController {
$data = $this->request->getQueryParameter('data') ?? '';
if (count($sites)) {
$items = array_filter($this->service->sites, fn(Site $siteEntity) => in_array($siteEntity->name, $sites));
$items = array_filter($this->getSites(), fn(Site $siteEntity) => in_array($siteEntity->name, $sites));
} else {
$items = $this->service->sites;
$items = $this->getSites();
}
return json_encode($data == '' ? $items : array_map(fn(Site $siteEntity) => $siteEntity->$data, $items));
}

View File

@@ -20,10 +20,10 @@ class MikrotikController extends AbstractIPListController {
$response = [];
if (count($sites)) {
foreach ($sites as $site) {
$response = array_merge($response, $this->generateList($site, $this->service->sites[$site]->$data));
$response = array_merge($response, $this->generateList($site, $this->getSites()[$site]->$data));
}
} else {
foreach ($this->service->sites as $siteEntity) {
foreach ($this->getSites() as $siteEntity) {
$response = array_merge($response, $this->generateList($siteEntity->name, $siteEntity->$data));
}
}

View File

@@ -37,11 +37,11 @@ class SwitchyController extends AbstractIPListController {
foreach ($sites as $site) {
$domains = array_merge(
$domains,
array_map($this->wildcardFormat(...), $this->service->sites[$site]->$data)
array_map($this->wildcardFormat(...), $this->getSites()[$site]->$data)
);
}
} else {
foreach ($this->service->sites as $siteEntity) {
foreach ($this->getSites() as $siteEntity) {
$domains = array_merge($domains, array_map($this->wildcardFormat(...), $siteEntity->$data));
}
}

View File

@@ -21,10 +21,10 @@ class TextController extends AbstractIPListController {
$response = [];
if (count($sites)) {
foreach ($sites as $site) {
$response = array_merge($response, $this->service->sites[$site]->$data);
$response = array_merge($response, $this->getSites()[$site]->$data);
}
} else {
foreach ($this->service->sites as $siteEntity) {
foreach ($this->getSites() as $siteEntity) {
$response = array_merge($response, $siteEntity->$data);
}
}

View File

@@ -601,6 +601,14 @@ use OpenCCK\App\Controller\TextController;
}
.main-formSelect {}
.main-formSelect_site {}
.main-formItemCheckbox {
margin: 0 6px 0 0;
}
.main-formItemCheckboxLabel {
line-height: 1;
font-size: 14px;
font-weight: normal;
}
</style>
</head>
<body>
@@ -639,6 +647,10 @@ use OpenCCK\App\Controller\TextController;
</span>
<span class="main-formItemComment">Don't choose sites if you want to get everything</span>
</label>
<label class="main-formItem main-formItem_wide">
<input class="main-formItemCheckbox" type="checkbox" name="wildcard" value="1" />
<span class="main-formItemCheckboxLabel">Only wildcard domains</span>
</label>
</section>
<section>
<button type="submit">Submit</button>