{% extends 'layout/base.twig' %} {% set title = 'TLD Registry' %} {% set pageTitle = 'TLD Registry' %} {% set pageDescription = 'Manage Top-Level Domain registry information' %} {% set pageIcon = 'fas fa-database' %} {% set currentFilters = filters|default({search: '', sort: 'tld', order: 'asc'}) %} {% block content %} {# Action Buttons #} {% if session.role is defined and session.role == 'admin' %}
{# IANA Dropdown #}
{# Export Dropdown #}
{# Import Button #} {# Create Button #}
{% else %}

View-only mode. Contact admin to import or modify TLD data.

{% endif %} {# Statistics Cards #}
{# Total TLDs Card #}

Total TLDs

{{ tldStats.total|default(0) }}

{# Active TLDs Card #}

Active

{{ tldStats.active|default(0) }}

{# With RDAP Card #}

With RDAP

{{ tldStats.with_rdap|default(0) }}

{# With WHOIS Card #}

With WHOIS

{{ tldStats.with_whois|default(0) }}

{# Search and Filters #}
{# Search #}
{# Status Filter #}
{# Data Type Filter #}
{# Actions #}
Clear
{# Pagination Info & Per Page Selector #}
Showing {{ pagination.showing_from }} to {{ pagination.showing_to }} of {{ pagination.total }} TLD(s)
{# TLD Registry Table #}
{% if session.role is defined and session.role == 'admin' %} {# Bulk Actions Bar #} {% endif %} {% if tlds is not empty %} {# Table View (Desktop) #} {# Card View (Mobile) #}
{% for tld in tlds %}

{{ tld.tld }}

{% if tld.registry_url %} Registry {% endif %}
{{ tld.is_active ? 'Active' : 'Inactive' }}
{% if tld.rdap_servers %} {% set rdapServers = tld.rdap_servers|from_json %} {% if rdapServers is iterable and rdapServers is not empty %}
{{ rdapServers[0] }}
{% if rdapServers|length > 1 %}
+{{ rdapServers|length - 1 }} more RDAP server(s)
{% endif %}
{% endif %} {% endif %} {% if tld.whois_server %}
{{ tld.whois_server }}
{% endif %}
{{ tld.updated_at ? tld.updated_at|date('M d, H:i') : 'Never updated' }}
View {% if session.role is defined and session.role == 'admin' %} Refresh {% endif %}
{% endfor %}
{% else %}

No TLDs Found

{% if currentFilters.search is not empty %} No TLDs match your search criteria. {% else %} Start by importing the TLD list from IANA. {% endif %}

{% if currentFilters.search is empty %}
{{ csrf_field() }}
{% endif %}
{% endif %}
{# Pagination Controls #} {% if pagination.total_pages > 1 %}
Page {{ pagination.current_page }} of {{ pagination.total_pages }}
{% set currentPage = pagination.current_page %} {% set totalPages = pagination.total_pages %} {# First Page #} {% if currentPage > 1 %} {% endif %} {# Previous Page #} {% if currentPage > 1 %} Previous {% endif %} {# Page Numbers #} {% set range = 2 %} {% set start = max(1, currentPage - range) %} {% set end = min(totalPages, currentPage + range) %} {% if start > 1 %} 1 {% if start > 2 %} ... {% endif %} {% endif %} {% for i in start..end %} {% if i == currentPage %} {{ i }} {% else %} {{ i }} {% endif %} {% endfor %} {% if end < totalPages %} {% if end < totalPages - 1 %} ... {% endif %} {{ totalPages }} {% endif %} {# Next Page #} {% if currentPage < totalPages %} Next {% endif %} {# Last Page #} {% if currentPage < totalPages %} {% endif %}
{% endif %} {# Create TLD Modal #} {# Import TLD Modal #} {% endblock %}