mirror of
https://github.com/getnamingo/registry.git
synced 2025-05-17 01:57:00 +02:00
More UI improvements
This commit is contained in:
parent
22052f70ab
commit
3a5e3388e3
6 changed files with 186 additions and 101 deletions
|
@ -976,8 +976,6 @@ class SystemController extends Controller
|
|||
$premium_pricing = $db->selectRow('SELECT * FROM premium_domain_pricing WHERE tld_id = ?',
|
||||
[ $tld['id'] ]);
|
||||
$premium_categories = $db->select('SELECT * FROM premium_domain_categories');
|
||||
$promotions = $db->select('SELECT * FROM promotion_pricing WHERE tld_id = ?',
|
||||
[ $tld['id'] ]);
|
||||
$launch_phases = $db->select('SELECT * FROM launch_phases WHERE tld_id = ?',
|
||||
[ $tld['id'] ]);
|
||||
|
||||
|
@ -1169,7 +1167,6 @@ class SystemController extends Controller
|
|||
'tld_restore' => $tld_restore,
|
||||
'premium_pricing' => $premium_pricing,
|
||||
'premium_categories' => $premium_categories,
|
||||
'promotions' => $promotions,
|
||||
'launch_phases' => $launch_phases,
|
||||
'secureTld' => $secureTld,
|
||||
'dnssecData' => $dnssecData,
|
||||
|
@ -1487,6 +1484,60 @@ class SystemController extends Controller
|
|||
//}
|
||||
}
|
||||
|
||||
public function viewPromo(Request $request, Response $response, $args)
|
||||
{
|
||||
if ($_SESSION["auth_roles"] != 0) {
|
||||
return $response->withHeader('Location', '/dashboard')->withStatus(302);
|
||||
}
|
||||
|
||||
$db = $this->container->get('db');
|
||||
// Get the current URI
|
||||
$uri = $request->getUri()->getPath();
|
||||
|
||||
if ($args) {
|
||||
$args = trim($args);
|
||||
|
||||
if (!preg_match('/^\.(xn--[a-zA-Z0-9-]+|[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)?)$/', $args)) {
|
||||
$this->container->get('flash')->addMessage('error', 'Invalid TLD format');
|
||||
return $response->withHeader('Location', '/registry/tlds')->withStatus(302);
|
||||
}
|
||||
|
||||
$tld = $db->selectRow('SELECT id, tld, idn_table, secure FROM domain_tld WHERE tld = ?',
|
||||
[ $args ]);
|
||||
|
||||
if ($tld) {
|
||||
$promotions = $db->select('SELECT * FROM promotion_pricing WHERE tld_id = ?',
|
||||
[ $tld['id'] ]);
|
||||
|
||||
if (strpos(strtolower($tld['tld']), '.xn--') === 0) {
|
||||
$tld['tld'] = ltrim($tld['tld'], '.');
|
||||
$tld_u = '.'.idn_to_utf8($tld['tld'], 0, INTL_IDNA_VARIANT_UTS46);
|
||||
$tld['tld'] = '.'.$tld['tld'];
|
||||
} else {
|
||||
$tld_u = $tld['tld'];
|
||||
}
|
||||
|
||||
$_SESSION['u_tld_id'] = [$tld['id']];
|
||||
$_SESSION['u_tld_extension'] = [$tld['tld']];
|
||||
|
||||
return view($response,'admin/system/viewPromo.twig', [
|
||||
'tld' => $tld,
|
||||
'tld_u' => $tld_u,
|
||||
'promotions' => $promotions,
|
||||
'currentUri' => $uri
|
||||
]);
|
||||
} else {
|
||||
// TLD does not exist, redirect to the tlds view
|
||||
return $response->withHeader('Location', '/registry/tlds')->withStatus(302);
|
||||
}
|
||||
|
||||
} else {
|
||||
// Redirect to the tlds view
|
||||
return $response->withHeader('Location', '/registry/tlds')->withStatus(302);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function managePromo(Request $request, Response $response)
|
||||
{
|
||||
if ($_SESSION["auth_roles"] != 0) {
|
||||
|
@ -1568,11 +1619,11 @@ class SystemController extends Controller
|
|||
unset($_SESSION['u_tld_extension']);
|
||||
|
||||
$this->container->get('flash')->addMessage('success', 'Promotion updates for the ' . $sData['extension'] . ' TLD have been successfully applied');
|
||||
return $response->withHeader('Location', '/registry/tlds')->withStatus(302);
|
||||
return $response->withHeader('Location', '/registry/promotion/'.$sData['extension'])->withStatus(302);
|
||||
} catch (Exception $e) {
|
||||
$db->rollBack();
|
||||
$this->container->get('flash')->addMessage('error', 'Database failure: ' . $e->getMessage());
|
||||
return $response->withHeader('Location', '/registry/tld/'.$sData['extension'])->withStatus(302);
|
||||
return $response->withHeader('Location', '/registry/promotion/'.$sData['extension'])->withStatus(302);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
<!-- Page title actions -->
|
||||
<div class="col-auto ms-auto d-print-none">
|
||||
<div class="btn-list">
|
||||
<a href="/registry/idnexport/{{ tld.tld }}" class="btn btn-info d-none d-sm-inline-block">
|
||||
<a href="/registry/idnexport/{{ tld.tld }}" class="btn btn-outline-info d-none d-sm-inline-block">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M11.5 21h-4.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v5m-5 6h7m-3 -3l3 3l-3 3" /></svg>
|
||||
{{ __('Export IDN Table') }}
|
||||
</a>
|
||||
<a href="/registry/idnexport/{{ tld.tld }}" class="btn btn-info d-sm-none btn-icon" aria-label="{{ __('Export IDN Table') }}" title="{{ __('Export IDN Table') }}">
|
||||
<a href="/registry/idnexport/{{ tld.tld }}" class="btn btn-outline-info d-sm-none btn-icon" aria-label="{{ __('Export IDN Table') }}" title="{{ __('Export IDN Table') }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M11.5 21h-4.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v5m-5 6h7m-3 -3l3 3l-3 3" /></svg>
|
||||
</a>
|
||||
</div>
|
||||
|
@ -320,98 +320,6 @@
|
|||
</div>
|
||||
</form>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title">{{ __('Manage Promotions') }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive mb-3">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('Promotion Name') }}</th>
|
||||
<th>{{ __('Start Date') }}</th>
|
||||
<th>{{ __('End Date') }}</th>
|
||||
<th>{{ __('Discount') }} (%)</th>
|
||||
<th>{{ __('Discount Amount') }}</th>
|
||||
<th>{{ __('Description') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for promo in promotions %}
|
||||
<tr>
|
||||
<td>{{ promo.promo_name }}</td>
|
||||
<td>{{ promo.start_date }}</td>
|
||||
<td>{{ promo.end_date }}</td>
|
||||
<td>{{ promo.discount_percentage ? promo.discount_percentage ~ '%' : 'N/A' }}</td>
|
||||
<td>{{ promo.discount_amount ? promo.discount_amount : 'N/A' }}</td>
|
||||
<td>{{ promo.description ? promo.description : 'N/A' }}</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="8">{{ __('No promotions found.') }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h5 class="card-title mb-3">{{ __('Create New Promotion') }}</h5>
|
||||
<form action="/registry/promotions" method="post">
|
||||
{{ csrf.field | raw }}
|
||||
<div class="mb-3">
|
||||
<label for="promotionName" class="form-label required">{{ __('Promotion Name') }}</label>
|
||||
<input type="text" class="form-control" id="promotionName" name="promotionName" placeholder="Enter promotion name" required>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="mb-3">
|
||||
<label for="promotionStart" class="form-label required">{{ __('Promotion Start Date') }}</label>
|
||||
<input type="datetime-local" class="form-control" placeholder="e.g., 01/01/2023" id="promotionStart" name="promotionStart" required>
|
||||
<small class="form-text text-muted"><strong>{{ __('Please Note:') }}</strong> {{ __('All times displayed are in') }} <strong>Coordinated Universal Time (UTC)</strong></small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="mb-3">
|
||||
<label for="promotionEnd" class="form-label required">{{ __('Promotion End Date') }}</label>
|
||||
<input type="datetime-local" class="form-control" placeholder="e.g., 01/01/2023" id="promotionEnd" name="promotionEnd" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="discountType" class="form-label required">{{ __('Discount Type') }}</label>
|
||||
<select class="form-select" id="discountType" name="discountType" required>
|
||||
<option value="percentage">{{ __('Percentage') }}</option>
|
||||
<option value="fixed">{{ __('Fixed Amount') }}</option>
|
||||
<option value="free">{{ __('Free Domains') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="discountValue" class="form-label">{{ __('Discount Value') }}</label>
|
||||
<input type="text" class="form-control" id="discountValue" name="discountValue" placeholder="{{ __('Enter discount value') }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="max_count" class="form-label">{{ __('Maximum Discounted Items') }}</label>
|
||||
<input type="text" class="form-control" id="max_count" name="max_count">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="promotionConditions" class="form-label">{{ __('Conditions') }}</label>
|
||||
<textarea class="form-control" id="promotionConditions" name="promotionConditions" rows="3" placeholder="{{ __('Enter conditions') }}"></textarea>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="promotionDescription" class="form-label">{{ __('Description') }}</label>
|
||||
<textarea class="form-control" id="promotionDescription" name="promotionDescription" rows="3" placeholder="{{ __('Enter description') }}"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<button type="submit" class="btn btn-primary">{{ __('Update Promotions') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title">{{ __('Manage Launch Phases') }}</h5>
|
||||
|
|
125
cp/resources/views/admin/system/viewPromo.twig
Normal file
125
cp/resources/views/admin/system/viewPromo.twig
Normal file
|
@ -0,0 +1,125 @@
|
|||
{% extends "layouts/app.twig" %}
|
||||
|
||||
{% block title %}{{ __('Manage Promotions') }} {{ __('for') }} {{ tld_u }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="page-wrapper">
|
||||
<!-- Page header -->
|
||||
<div class="page-header d-print-none">
|
||||
<div class="container-xl">
|
||||
<div class="row g-2 align-items-center">
|
||||
<div class="col">
|
||||
<!-- Page pre-title -->
|
||||
<div class="page-pretitle">
|
||||
{{ __('Overview') }}
|
||||
</div>
|
||||
<h2 class="page-title">
|
||||
{{ __('Manage Promotions') }} {{ __('for') }} {{ tld_u }}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Page body -->
|
||||
<div class="page-body">
|
||||
<div class="container-xl">
|
||||
<div class="col-12">
|
||||
{% include 'partials/flash.twig' %}
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title">{{ __('Manage Promotions') }} {{ __('for') }} {{ tld_u }}</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive mb-3">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('Promotion Name') }}</th>
|
||||
<th>{{ __('Start Date') }}</th>
|
||||
<th>{{ __('End Date') }}</th>
|
||||
<th>{{ __('Discount') }} (%)</th>
|
||||
<th>{{ __('Discount Amount') }}</th>
|
||||
<th>{{ __('Description') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for promo in promotions %}
|
||||
<tr>
|
||||
<td>{{ promo.promo_name }}</td>
|
||||
<td>{{ promo.start_date }}</td>
|
||||
<td>{{ promo.end_date }}</td>
|
||||
<td>{{ promo.discount_percentage ? promo.discount_percentage ~ '%' : 'N/A' }}</td>
|
||||
<td>{{ promo.discount_amount ? promo.discount_amount : 'N/A' }}</td>
|
||||
<td>{{ promo.description ? promo.description : 'N/A' }}</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="8">{{ __('No promotions found.') }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h5 class="card-title mb-3">{{ __('Create New Promotion') }}</h5>
|
||||
<form action="/registry/promotions" method="post">
|
||||
{{ csrf.field | raw }}
|
||||
<div class="mb-3">
|
||||
<label for="promotionName" class="form-label required">{{ __('Promotion Name') }}</label>
|
||||
<input type="text" class="form-control" id="promotionName" name="promotionName" placeholder="Enter promotion name" required>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="mb-3">
|
||||
<label for="promotionStart" class="form-label required">{{ __('Promotion Start Date') }}</label>
|
||||
<input type="datetime-local" class="form-control" placeholder="e.g., 01/01/2023" id="promotionStart" name="promotionStart" required>
|
||||
<small class="form-text text-muted"><strong>{{ __('Please Note:') }}</strong> {{ __('All times displayed are in') }} <strong>Coordinated Universal Time (UTC)</strong></small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="mb-3">
|
||||
<label for="promotionEnd" class="form-label required">{{ __('Promotion End Date') }}</label>
|
||||
<input type="datetime-local" class="form-control" placeholder="e.g., 01/01/2023" id="promotionEnd" name="promotionEnd" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="discountType" class="form-label required">{{ __('Discount Type') }}</label>
|
||||
<select class="form-select" id="discountType" name="discountType" required>
|
||||
<option value="percentage">{{ __('Percentage') }}</option>
|
||||
<option value="fixed">{{ __('Fixed Amount') }}</option>
|
||||
<option value="free">{{ __('Free Domains') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="discountValue" class="form-label">{{ __('Discount Value') }}</label>
|
||||
<input type="text" class="form-control" id="discountValue" name="discountValue" placeholder="{{ __('Enter discount value') }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="max_count" class="form-label">{{ __('Maximum Discounted Items') }}</label>
|
||||
<input type="text" class="form-control" id="max_count" name="max_count">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="promotionConditions" class="form-label">{{ __('Conditions') }}</label>
|
||||
<textarea class="form-control" id="promotionConditions" name="promotionConditions" rows="3" placeholder="{{ __('Enter conditions') }}"></textarea>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="promotionDescription" class="form-label">{{ __('Description') }}</label>
|
||||
<textarea class="form-control" id="promotionDescription" name="promotionDescription" rows="3" placeholder="{{ __('Enter description') }}"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<button type="submit" class="btn btn-primary">{{ __('Update Promotions') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% include 'partials/footer.twig' %}
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -200,7 +200,7 @@
|
|||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li {{ is_current_url('epphistory') or is_current_url('poll') or is_current_url('log') or is_current_url('registry') or is_current_url('reports') or is_current_url('serverHealth') or is_current_url('listTlds') or is_current_url('createTld') or 'tld' in currentUri or 'reserved' in currentUri or 'tokens' in currentUri or (roles != 0 and 'registrar' in currentUri) ? 'class="nav-item dropdown active"' : 'class="nav-item dropdown"' }}>
|
||||
<li {{ is_current_url('epphistory') or is_current_url('poll') or is_current_url('log') or is_current_url('registry') or is_current_url('reports') or is_current_url('serverHealth') or is_current_url('listTlds') or is_current_url('createTld') or 'tld' in currentUri or 'reserved' in currentUri or 'tokens' in currentUri or 'registry/promotion' in currentUri or 'registry/phase' in currentUri or (roles != 0 and 'registrar' in currentUri) ? 'class="nav-item dropdown active"' : 'class="nav-item dropdown"' }}>
|
||||
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false">
|
||||
<span class="nav-link-icon d-md-none d-lg-inline-block"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z"></path> <path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0"></path></svg>
|
||||
</span>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
}
|
||||
|
||||
function actionsFormatter(cell, formatterParams, onRendered) {
|
||||
return `<a class="btn btn-icon btn-outline-primary" href="/registry/tld/${cell.getRow().getData().tld_o}" title="{{ __('Manage Settings') }}"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M7 10h3v-3l-3.5 -3.5a6 6 0 0 1 8 8l6 6a2 2 0 0 1 -3 3l-6 -6a6 6 0 0 1 -8 -8l3.5 3.5" /></svg></a> <a class="btn btn-icon btn-outline-orange" href="/registry/idnexport/${cell.getRow().getData().tld_o}" title="{{ __('Export IDN Table') }}" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M11.5 21h-4.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v5m-5 6h7m-3 -3l3 3l-3 3" /></svg></a>`;
|
||||
return `<a class="btn btn-icon btn-outline-primary" href="/registry/tld/${cell.getRow().getData().tld_o}" title="{{ __('Manage Settings') }}"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M7 10h3v-3l-3.5 -3.5a6 6 0 0 1 8 8l6 6a2 2 0 0 1 -3 3l-6 -6a6 6 0 0 1 -8 -8l3.5 3.5" /></svg></a> <a class="btn btn-icon btn-outline-green" href="/registry/promotion/${cell.getRow().getData().tld_o}" title="{{ __('Manage Promotions') }}"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M17 17m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M7 7m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M6 18l12 -12" /></svg></a> <a class="btn btn-icon btn-outline-orange" href="/registry/idnexport/${cell.getRow().getData().tld_o}" title="{{ __('Export IDN Table') }}" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M11.5 21h-4.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v5m-5 6h7m-3 -3l3 3l-3 3" /></svg></a>`;
|
||||
}
|
||||
|
||||
// Mapping of database string values to script names
|
||||
|
|
|
@ -145,6 +145,7 @@ $app->group('', function ($route) {
|
|||
$route->get('/registry/tokens/update/{token}', SystemController::class . ':updateToken')->setName('updateToken');
|
||||
$route->post('/registry/tokens/update', SystemController::class . ':updateTokenProcess')->setName('updateTokenProcess');
|
||||
$route->map(['GET', 'POST'], '/registry/tokens/delete/{token}', SystemController::class . ':deleteToken')->setName('deleteToken');
|
||||
$route->get('/registry/promotion/{tld}', SystemController::class . ':viewPromo')->setName('viewPromo');
|
||||
$route->post('/registry/promotions', SystemController::class . ':managePromo')->setName('managePromo');
|
||||
$route->post('/registry/phases', SystemController::class . ':managePhases')->setName('managePhases');
|
||||
$route->get('/registry/idnexport/{script}', SystemController::class .':idnexport')->setName('idnexport');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue