julienmonnerie/kirby/config/areas/system/dialogs.php

114 lines
2.9 KiB
PHP
Raw Normal View History

2022-06-17 17:51:59 +02:00
<?php
2022-08-31 15:02:43 +02:00
use Kirby\Cms\App;
2025-04-21 18:57:21 +02:00
use Kirby\Exception\LogicException;
2022-06-17 17:51:59 +02:00
use Kirby\Panel\Field;
2022-08-31 15:02:43 +02:00
use Kirby\Toolkit\I18n;
2022-06-17 17:51:59 +02:00
return [
2022-08-31 15:02:43 +02:00
// license key
'license' => [
'load' => function () {
2025-04-21 18:57:21 +02:00
$kirby = App::instance();
$license = $kirby->system()->license();
$obfuscated = $kirby->user()->isAdmin() === false;
$status = $license->status();
$renewable = $status->renewable();
2022-08-31 15:02:43 +02:00
return [
2025-04-21 18:57:21 +02:00
'component' => 'k-license-dialog',
2022-08-31 15:02:43 +02:00
'props' => [
2025-04-21 18:57:21 +02:00
'license' => [
'code' => $license->code($obfuscated),
'icon' => $status->icon(),
'info' => $status->info($license->renewal('Y-m-d', 'date')),
'theme' => $status->theme(),
'type' => $license->label(),
2022-08-31 15:02:43 +02:00
],
2025-04-21 18:57:21 +02:00
'cancelButton' => $renewable,
'submitButton' => $renewable ? [
'icon' => 'refresh',
'text' => I18n::translate('renew'),
'theme' => 'love',
] : false,
2022-08-31 15:02:43 +02:00
]
];
2025-04-21 18:57:21 +02:00
},
'submit' => function () {
// @codeCoverageIgnoreStart
$response = App::instance()->system()->license()->upgrade();
// the upgrade is still needed
if ($response['status'] === 'upgrade') {
return [
'redirect' => $response['url']
];
}
// the upgrade has already been completed
if ($response['status'] === 'complete') {
return [
'event' => 'system.renew',
'message' => I18n::translate('license.success')
];
}
2025-07-11 14:41:34 +02:00
throw new LogicException(message: 'The upgrade failed');
2025-04-21 18:57:21 +02:00
// @codeCoverageIgnoreEnd
2022-08-31 15:02:43 +02:00
}
],
// license registration
'registration' => [
'load' => function () {
2023-04-14 16:34:06 +02:00
$system = App::instance()->system();
2025-04-21 18:57:21 +02:00
$local = $system->isLocal();
2023-04-14 16:34:06 +02:00
2022-08-31 15:02:43 +02:00
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
2023-04-14 16:34:06 +02:00
'domain' => [
2025-04-21 18:57:21 +02:00
'label' => I18n::translate('license.activate.label'),
2023-04-14 16:34:06 +02:00
'type' => 'info',
2025-04-21 18:57:21 +02:00
'theme' => $local ? 'warning' : 'info',
'text' => I18n::template('license.activate.' . ($local ? 'local' : 'domain'), ['host' => $system->indexUrl()])
2023-04-14 16:34:06 +02:00
],
2022-08-31 15:02:43 +02:00
'license' => [
2025-04-21 18:57:21 +02:00
'label' => I18n::translate('license.code.label'),
2022-08-31 15:02:43 +02:00
'type' => 'text',
'required' => true,
'counter' => false,
2025-04-21 18:57:21 +02:00
'placeholder' => 'K-',
'help' => I18n::translate('license.code.help') . ' ' . '<a href="https://getkirby.com/buy" target="_blank">' . I18n::translate('license.buy') . ' &rarr;</a>'
2022-08-31 15:02:43 +02:00
],
2023-04-14 16:34:06 +02:00
'email' => Field::email(['required' => true])
2022-08-31 15:02:43 +02:00
],
2025-04-21 18:57:21 +02:00
'submitButton' => [
'icon' => 'key',
'text' => I18n::translate('activate'),
'theme' => 'love',
],
2022-08-31 15:02:43 +02:00
'value' => [
'license' => null,
'email' => null
]
]
];
},
'submit' => function () {
// @codeCoverageIgnoreStart
$kirby = App::instance();
$kirby->system()->register(
$kirby->request()->get('license'),
$kirby->request()->get('email')
);
return [
'event' => 'system.register',
2025-04-21 18:57:21 +02:00
'message' => I18n::translate('license.success')
2022-08-31 15:02:43 +02:00
];
// @codeCoverageIgnoreEnd
}
],
2022-06-17 17:51:59 +02:00
];