mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-14 21:44:08 +02:00
Merge branch 'main' of https://github.com/cisagov/manage.get.gov into es/code-review-update
This commit is contained in:
commit
e3309cdf53
64 changed files with 947 additions and 764 deletions
15
src/registrar/assets/src/js/getgov/domain-dnssec.js
Normal file
15
src/registrar/assets/src/js/getgov/domain-dnssec.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { submitForm } from './helpers.js';
|
||||||
|
|
||||||
|
export function initDomainDNSSEC() {
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
let domain_dnssec_page = document.getElementById("domain-dnssec");
|
||||||
|
if (domain_dnssec_page) {
|
||||||
|
const button = document.getElementById("disable-dnssec-button");
|
||||||
|
if (button) {
|
||||||
|
button.addEventListener("click", function () {
|
||||||
|
submitForm("disable-dnssec-form");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
27
src/registrar/assets/src/js/getgov/domain-dsdata.js
Normal file
27
src/registrar/assets/src/js/getgov/domain-dsdata.js
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import { submitForm } from './helpers.js';
|
||||||
|
|
||||||
|
export function initDomainDSData() {
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
let domain_dsdata_page = document.getElementById("domain-dsdata");
|
||||||
|
if (domain_dsdata_page) {
|
||||||
|
const override_button = document.getElementById("disable-override-click-button");
|
||||||
|
const cancel_button = document.getElementById("btn-cancel-click-button");
|
||||||
|
const cancel_close_button = document.getElementById("btn-cancel-click-close-button");
|
||||||
|
if (override_button) {
|
||||||
|
override_button.addEventListener("click", function () {
|
||||||
|
submitForm("disable-override-click-form");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (cancel_button) {
|
||||||
|
cancel_button.addEventListener("click", function () {
|
||||||
|
submitForm("btn-cancel-click-form");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (cancel_close_button) {
|
||||||
|
cancel_close_button.addEventListener("click", function () {
|
||||||
|
submitForm("btn-cancel-click-form");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
20
src/registrar/assets/src/js/getgov/domain-managers.js
Normal file
20
src/registrar/assets/src/js/getgov/domain-managers.js
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import { submitForm } from './helpers.js';
|
||||||
|
|
||||||
|
export function initDomainManagersPage() {
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
let domain_managers_page = document.getElementById("domain-managers");
|
||||||
|
if (domain_managers_page) {
|
||||||
|
// Add event listeners for all buttons matching user-delete-button-{NUMBER}
|
||||||
|
const deleteButtons = document.querySelectorAll('[id^="user-delete-button-"]'); // Select buttons with ID starting with "user-delete-button-"
|
||||||
|
deleteButtons.forEach((button) => {
|
||||||
|
const buttonId = button.id; // e.g., "user-delete-button-1"
|
||||||
|
const number = buttonId.split('-').pop(); // Extract the NUMBER part
|
||||||
|
const formId = `user-delete-form-${number}`; // Generate the corresponding form ID
|
||||||
|
|
||||||
|
button.addEventListener("click", function () {
|
||||||
|
submitForm(formId); // Pass the form ID to submitForm
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
12
src/registrar/assets/src/js/getgov/domain-request-form.js
Normal file
12
src/registrar/assets/src/js/getgov/domain-request-form.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import { submitForm } from './helpers.js';
|
||||||
|
|
||||||
|
export function initDomainRequestForm() {
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const button = document.getElementById("domain-request-form-submit-button");
|
||||||
|
if (button) {
|
||||||
|
button.addEventListener("click", function () {
|
||||||
|
submitForm("submit-domain-request-form");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
19
src/registrar/assets/src/js/getgov/form-errors.js
Normal file
19
src/registrar/assets/src/js/getgov/form-errors.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
export function initFormErrorHandling() {
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const errorSummary = document.getElementById('form-errors');
|
||||||
|
const firstErrorField = document.querySelector('.usa-input--error');
|
||||||
|
if (firstErrorField) {
|
||||||
|
// Scroll to the first field in error
|
||||||
|
firstErrorField.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||||
|
|
||||||
|
// Add focus to the first field in error
|
||||||
|
setTimeout(() => {
|
||||||
|
firstErrorField.focus();
|
||||||
|
}, 50);
|
||||||
|
} else if (errorSummary) {
|
||||||
|
// Scroll to the error summary
|
||||||
|
errorSummary.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
|
@ -75,3 +75,16 @@ export function debounce(handler, cooldown=600) {
|
||||||
export function getCsrfToken() {
|
export function getCsrfToken() {
|
||||||
return document.querySelector('input[name="csrfmiddlewaretoken"]').value;
|
return document.querySelector('input[name="csrfmiddlewaretoken"]').value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to submit a form
|
||||||
|
* @param {} form_id - the id of the form to be submitted
|
||||||
|
*/
|
||||||
|
export function submitForm(form_id) {
|
||||||
|
let form = document.getElementById(form_id);
|
||||||
|
if (form) {
|
||||||
|
form.submit();
|
||||||
|
} else {
|
||||||
|
console.error("Form '" + form_id + "' not found.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -11,6 +11,11 @@ import { initMembersTable } from './table-members.js';
|
||||||
import { initMemberDomainsTable } from './table-member-domains.js';
|
import { initMemberDomainsTable } from './table-member-domains.js';
|
||||||
import { initEditMemberDomainsTable } from './table-edit-member-domains.js';
|
import { initEditMemberDomainsTable } from './table-edit-member-domains.js';
|
||||||
import { initPortfolioNewMemberPageToggle, initAddNewMemberPageListeners, initPortfolioMemberPageRadio } from './portfolio-member-page.js';
|
import { initPortfolioNewMemberPageToggle, initAddNewMemberPageListeners, initPortfolioMemberPageRadio } from './portfolio-member-page.js';
|
||||||
|
import { initDomainRequestForm } from './domain-request-form.js';
|
||||||
|
import { initDomainManagersPage } from './domain-managers.js';
|
||||||
|
import { initDomainDSData } from './domain-dsdata.js';
|
||||||
|
import { initDomainDNSSEC } from './domain-dnssec.js';
|
||||||
|
import { initFormErrorHandling } from './form-errors.js';
|
||||||
|
|
||||||
initDomainValidators();
|
initDomainValidators();
|
||||||
|
|
||||||
|
@ -36,6 +41,13 @@ initMembersTable();
|
||||||
initMemberDomainsTable();
|
initMemberDomainsTable();
|
||||||
initEditMemberDomainsTable();
|
initEditMemberDomainsTable();
|
||||||
|
|
||||||
|
initDomainRequestForm();
|
||||||
|
initDomainManagersPage();
|
||||||
|
initDomainDSData();
|
||||||
|
initDomainDNSSEC();
|
||||||
|
|
||||||
|
initFormErrorHandling();
|
||||||
|
|
||||||
// Init the portfolio new member page
|
// Init the portfolio new member page
|
||||||
initPortfolioMemberPageRadio();
|
initPortfolioMemberPageRadio();
|
||||||
initPortfolioNewMemberPageToggle();
|
initPortfolioNewMemberPageToggle();
|
||||||
|
|
|
@ -495,7 +495,8 @@ export class BaseTable {
|
||||||
// Add event listeners to table headers for sorting
|
// Add event listeners to table headers for sorting
|
||||||
initializeTableHeaders() {
|
initializeTableHeaders() {
|
||||||
this.tableHeaders.forEach(header => {
|
this.tableHeaders.forEach(header => {
|
||||||
header.addEventListener('click', () => {
|
header.addEventListener('click', event => {
|
||||||
|
let button = header.querySelector('.usa-table__header__button')
|
||||||
const sortBy = header.getAttribute('data-sortable');
|
const sortBy = header.getAttribute('data-sortable');
|
||||||
let order = 'asc';
|
let order = 'asc';
|
||||||
// sort order will be ascending, unless the currently sorted column is ascending, and the user
|
// sort order will be ascending, unless the currently sorted column is ascending, and the user
|
||||||
|
@ -505,6 +506,13 @@ export class BaseTable {
|
||||||
}
|
}
|
||||||
// load the results with the updated sort
|
// load the results with the updated sort
|
||||||
this.loadTable(1, sortBy, order);
|
this.loadTable(1, sortBy, order);
|
||||||
|
// If the click occurs outside of the button, need to simulate a button click in order
|
||||||
|
// for USWDS listener on the button to execute.
|
||||||
|
// Check first to see if click occurs outside of the button
|
||||||
|
if (!button.contains(event.target)) {
|
||||||
|
// Simulate a button click
|
||||||
|
button.click();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,7 +176,16 @@ html[data-theme="dark"] {
|
||||||
color: var(--primary-fg);
|
color: var(--primary-fg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reset the USWDS styles for alerts
|
||||||
|
@include at-media(desktop) {
|
||||||
|
.dashboard .usa-alert__body--widescreen {
|
||||||
|
padding-left: 4rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard .usa-alert__body--widescreen::before {
|
||||||
|
left: 1.5rem !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#branding h1,
|
#branding h1,
|
||||||
h1, h2, h3,
|
h1, h2, h3,
|
||||||
|
|
|
@ -1,21 +1,18 @@
|
||||||
@use "uswds-core" as *;
|
@use "uswds-core" as *;
|
||||||
@use "base" as *;
|
@use "base" as *;
|
||||||
|
|
||||||
// Fixes some font size disparities with the Figma
|
|
||||||
// for usa-alert alert elements
|
|
||||||
.usa-alert {
|
|
||||||
.usa-alert__heading.larger-font-sizing {
|
|
||||||
font-size: units(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.usa-alert__text.measure-none {
|
/*----------------
|
||||||
max-width: measure(none);
|
Alert Layout
|
||||||
}
|
-----------------*/
|
||||||
|
|
||||||
// The icon was off center for some reason
|
// The icon was off center for some reason
|
||||||
// Fixes that issue
|
// Fixes that issue
|
||||||
@media (min-width: 64em){
|
@include at-media(desktop) {
|
||||||
|
// NOTE: !important is used because _font.scss overrides this
|
||||||
|
.usa-alert__body--widescreen {
|
||||||
|
max-width: $widescreen-max-width !important;
|
||||||
|
}
|
||||||
.usa-alert--warning{
|
.usa-alert--warning{
|
||||||
.usa-alert__body::before {
|
.usa-alert__body::before {
|
||||||
left: 1rem !important;
|
left: 1rem !important;
|
||||||
|
@ -24,13 +21,29 @@
|
||||||
.usa-alert__body.margin-left-1 {
|
.usa-alert__body.margin-left-1 {
|
||||||
margin-left: 0.5rem!important;
|
margin-left: 0.5rem!important;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: !important is used because _font.scss overrides this
|
.usa-alert__body--widescreen::before {
|
||||||
|
left: 4rem !important;
|
||||||
|
}
|
||||||
.usa-alert__body--widescreen {
|
.usa-alert__body--widescreen {
|
||||||
max-width: $widescreen-max-width !important;
|
padding-left: 7rem!important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*----------------
|
||||||
|
Alert Fonts
|
||||||
|
-----------------*/
|
||||||
|
// Fixes some font size disparities with the Figma
|
||||||
|
// for usa-alert alert elements
|
||||||
|
.usa-alert {
|
||||||
|
.usa-alert__heading.larger-font-sizing {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------
|
||||||
|
Alert Coloring
|
||||||
|
-----------------*/
|
||||||
.usa-site-alert--hot-pink {
|
.usa-site-alert--hot-pink {
|
||||||
.usa-alert {
|
.usa-alert {
|
||||||
background-color: $hot-pink;
|
background-color: $hot-pink;
|
||||||
|
@ -47,3 +60,4 @@
|
||||||
background-color: color('base-darkest');
|
background-color: color('base-darkest');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
@use "cisa_colors" as *;
|
@use "cisa_colors" as *;
|
||||||
|
|
||||||
$widescreen-max-width: 1920px;
|
$widescreen-max-width: 1920px;
|
||||||
|
$widescreen-x-padding: 4.5rem;
|
||||||
|
|
||||||
$hot-pink: #FFC3F9;
|
$hot-pink: #FFC3F9;
|
||||||
|
|
||||||
/* Styles for making visible to screen reader / AT users only. */
|
/* Styles for making visible to screen reader / AT users only. */
|
||||||
|
@ -252,6 +254,15 @@ abbr[title] {
|
||||||
max-width: $widescreen-max-width;
|
max-width: $widescreen-max-width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is used in cases where we want to align content to widescreen margins
|
||||||
|
// but we don't want the content itself to have widescreen widths
|
||||||
|
@include at-media(desktop) {
|
||||||
|
.padding-x--widescreen {
|
||||||
|
padding-left: $widescreen-x-padding !important;
|
||||||
|
padding-right: $widescreen-x-padding !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.margin-right-neg-4px {
|
.margin-right-neg-4px {
|
||||||
margin-right: -4px;
|
margin-right: -4px;
|
||||||
}
|
}
|
||||||
|
@ -266,3 +277,7 @@ abbr[title] {
|
||||||
height: 1.5em;
|
height: 1.5em;
|
||||||
width: 1.5em;
|
width: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.maxw-fit-content {
|
||||||
|
max-width: fit-content;
|
||||||
|
}
|
|
@ -6,3 +6,21 @@
|
||||||
.usa-identifier__container--widescreen {
|
.usa-identifier__container--widescreen {
|
||||||
max-width: $widescreen-max-width !important;
|
max-width: $widescreen-max-width !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// NOTE: !important is used because we are overriding default
|
||||||
|
// USWDS paddings in a few locations
|
||||||
|
@include at-media(desktop) {
|
||||||
|
.grid-container--widescreen {
|
||||||
|
padding-left: $widescreen-x-padding !important;
|
||||||
|
padding-right: $widescreen-x-padding !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// matches max-width to equal the max-width of .grid-container
|
||||||
|
// used to trick the eye into thinking we have left-aligned a
|
||||||
|
// regular grid-container within a widescreen (see instances
|
||||||
|
// where is_widescreen_centered is used in the html).
|
||||||
|
.max-width--grid-container {
|
||||||
|
max-width: 960px;
|
||||||
|
}
|
|
@ -110,8 +110,8 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.usa-nav__secondary {
|
.usa-nav__secondary {
|
||||||
// I don't know why USWDS has this at 2 rem, which puts it out of alignment
|
right: 1rem;
|
||||||
right: 3rem;
|
padding-right: $widescreen-x-padding;
|
||||||
color: color('white');
|
color: color('white');
|
||||||
bottom: 4.3rem;
|
bottom: 4.3rem;
|
||||||
.usa-nav-link,
|
.usa-nav-link,
|
||||||
|
|
|
@ -88,8 +88,14 @@ th {
|
||||||
}
|
}
|
||||||
|
|
||||||
@include at-media(tablet-lg) {
|
@include at-media(tablet-lg) {
|
||||||
th[data-sortable]:not([aria-sort]) .usa-table__header__button {
|
th[data-sortable] .usa-table__header__button {
|
||||||
|
right: auto;
|
||||||
|
|
||||||
|
&[aria-sort=ascending],
|
||||||
|
&[aria-sort=descending],
|
||||||
|
&:not([aria-sort]) {
|
||||||
right: auto;
|
right: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -251,7 +251,7 @@ TEMPLATES = [
|
||||||
"registrar.context_processors.org_user_status",
|
"registrar.context_processors.org_user_status",
|
||||||
"registrar.context_processors.add_path_to_context",
|
"registrar.context_processors.add_path_to_context",
|
||||||
"registrar.context_processors.portfolio_permissions",
|
"registrar.context_processors.portfolio_permissions",
|
||||||
"registrar.context_processors.is_widescreen_mode",
|
"registrar.context_processors.is_widescreen_centered",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -109,31 +109,21 @@ def portfolio_permissions(request):
|
||||||
return portfolio_context
|
return portfolio_context
|
||||||
|
|
||||||
|
|
||||||
def is_widescreen_mode(request):
|
def is_widescreen_centered(request):
|
||||||
widescreen_paths = [] # If this list is meant to include specific paths, populate it.
|
include_paths = [
|
||||||
portfolio_widescreen_paths = [
|
|
||||||
"/domains/",
|
"/domains/",
|
||||||
"/requests/",
|
"/requests/",
|
||||||
"/request/",
|
"/members/",
|
||||||
"/no-organization-requests/",
|
|
||||||
"/no-organization-domains/",
|
|
||||||
"/domain-request/",
|
|
||||||
]
|
]
|
||||||
# widescreen_paths can be a bear as it trickles down sub-urls. exclude_paths gives us a way out.
|
|
||||||
exclude_paths = [
|
exclude_paths = [
|
||||||
"/domains/edit",
|
"/domains/edit",
|
||||||
|
"members/new-member/",
|
||||||
]
|
]
|
||||||
|
|
||||||
# Check if the current path matches a widescreen path or the root path.
|
is_excluded = any(exclude_path in request.path for exclude_path in exclude_paths)
|
||||||
is_widescreen = any(path in request.path for path in widescreen_paths) or request.path == "/"
|
|
||||||
|
|
||||||
# Check if the user is an organization user and the path matches portfolio paths.
|
# Check if the current path matches a path in included_paths or the root path.
|
||||||
is_portfolio_widescreen = (
|
is_widescreen_centered = any(path in request.path for path in include_paths) or request.path == "/"
|
||||||
hasattr(request.user, "is_org_user")
|
|
||||||
and request.user.is_org_user(request)
|
|
||||||
and any(path in request.path for path in portfolio_widescreen_paths)
|
|
||||||
and not any(exclude_path in request.path for exclude_path in exclude_paths)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Return a dictionary with the widescreen mode status.
|
# Return a dictionary with the widescreen mode status.
|
||||||
return {"is_widescreen_mode": is_widescreen or is_portfolio_widescreen}
|
return {"is_widescreen_centered": is_widescreen_centered and not is_excluded}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
{% block title %}{% translate "Unauthorized | " %}{% endblock %}
|
{% block title %}{% translate "Unauthorized | " %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main id="main-content" class="grid-container {% if is_widescreen_mode %} grid-container--widescreen{% endif %}">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-row grow-gap">
|
<div class="grid-row grow-gap {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
||||||
<h1>
|
<h1>
|
||||||
{% translate "You are not authorized to view this page" %}
|
{% translate "You are not authorized to view this page" %}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
{% block title %}{% translate "Forbidden | " %}{% endblock %}
|
{% block title %}{% translate "Forbidden | " %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main id="main-content" class="grid-container {% if is_widescreen_mode %} grid-container--widescreen{% endif %}">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-row grow-gap">
|
<div class="grid-row grow-gap {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
||||||
<h1>
|
<h1>
|
||||||
{% translate "You're not authorized to view this page." %}
|
{% translate "You're not authorized to view this page." %}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
{% block title %}{% translate "Page not found | " %}{% endblock %}
|
{% block title %}{% translate "Page not found | " %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main id="main-content" class="grid-container {% if is_widescreen_mode %} grid-container--widescreen{% endif %}">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-row grid-gap">
|
<div class="grid-row grid-gap {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
||||||
<h1>
|
<h1>
|
||||||
{% translate "We couldn’t find that page" %}
|
{% translate "We couldn’t find that page" %}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
{% block title %}{% translate "Server error | " %}{% endblock %}
|
{% block title %}{% translate "Server error | " %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main id="main-content" class="grid-container {% if is_widescreen_mode %} grid-container--widescreen{% endif %}">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-row grid-gap">
|
<div class="grid-row grid-gap {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
<div class="tablet:grid-col-6 usa-prose margin-bottom-3">
|
||||||
<h1>
|
<h1>
|
||||||
{% translate "We're having some trouble." %}
|
{% translate "We're having some trouble." %}
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
{% for model in app.models %}
|
{% for model in app.models %}
|
||||||
<tr class="model-{{ model.object_name|lower }}{% if model.admin_url in request.path|urlencode %} current-model{% endif %}">
|
<tr class="model-{{ model.object_name|lower }}{% if model.admin_url in request.path|urlencode %} current-model{% endif %}">
|
||||||
{% if model.admin_url %}
|
{% if model.admin_url %}
|
||||||
<th scope="row"><a href="{{ model.admin_url }}"{% if model.admin_url in request.path|urlencode %} aria-current="page"{% endif %}>{{ model.name }}</a></th>
|
<th scope="row"><a href="{{ model.admin_url }}"{% if model.admin_url in request.path|urlencode %} aria-current="page"{% endif %}">{{ model.name }}</a></th>
|
||||||
{% else %}
|
{% else %}
|
||||||
<th scope="row">{{ model.name }}</th>
|
<th scope="row">{{ model.name }}</th>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -61,7 +61,7 @@ https://github.com/django/django/blob/main/django/contrib/admin/templates/admin/
|
||||||
{% if field.field.help_text %}
|
{% if field.field.help_text %}
|
||||||
{# .gov override #}
|
{# .gov override #}
|
||||||
{% block help_text %}
|
{% block help_text %}
|
||||||
<div class="help"{% if field.field.id_for_label %} id="{{ field.field.id_for_label }}_helptext"{% endif %}>
|
<div class="help"{% if field.field.id_for_label %} id="{{ field.field.id_for_label }}_helptext"{% endif %}">
|
||||||
<div>{{ field.field.help_text|safe }}</div>
|
<div>{{ field.field.help_text|safe }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock help_text %}
|
{% endblock help_text %}
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
<select name="selected_user" id="selected_user" class="admin-combobox margin-top-0" onchange="this.form.submit()">
|
<select name="selected_user" id="selected_user" class="admin-combobox margin-top-0" onchange="this.form.submit()">
|
||||||
<option value="">Select a user</option>
|
<option value="">Select a user</option>
|
||||||
{% for user in other_users %}
|
{% for user in other_users %}
|
||||||
<option value="{{ user.pk }}" {% if selected_user and user.pk == selected_user.pk %}selected{% endif %}>
|
<option value="{{ user.pk }}" {% if selected_user and user.pk == selected_user.pk %}selected{% endif %}">
|
||||||
{{ user.first_name }} {{ user.last_name }}
|
{{ user.first_name }} {{ user.last_name }}
|
||||||
</option>
|
</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -97,7 +97,7 @@
|
||||||
<section class="usa-banner" aria-label="Official website of the United States government">
|
<section class="usa-banner" aria-label="Official website of the United States government">
|
||||||
<div class="usa-accordion">
|
<div class="usa-accordion">
|
||||||
<header class="usa-banner__header">
|
<header class="usa-banner__header">
|
||||||
<div class="usa-banner__inner {% if is_widescreen_mode %} usa-banner__inner--widescreen {% endif %}">
|
<div class="usa-banner__inner usa-banner__inner--widescreen padding-x--widescreen">
|
||||||
<div class="grid-col-auto">
|
<div class="grid-col-auto">
|
||||||
<img class="usa-banner__header-flag" src="{% static 'img/us_flag_small.png' %}" alt="U.S. flag" />
|
<img class="usa-banner__header-flag" src="{% static 'img/us_flag_small.png' %}" alt="U.S. flag" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="usa-banner__content usa-accordion__content" id="gov-banner-default">
|
<div class="usa-banner__content usa-accordion__content padding-x--widescreen margin-x-0" id="gov-banner-default">
|
||||||
<div class="grid-row grid-gap-lg">
|
<div class="grid-row grid-gap-lg">
|
||||||
<div class="usa-banner__guidance tablet:grid-col-6">
|
<div class="usa-banner__guidance tablet:grid-col-6">
|
||||||
<img class="usa-banner__icon usa-media-block__img" src="{% static 'img/icon-dot-gov.svg' %}" role="img"
|
<img class="usa-banner__icon usa-media-block__img" src="{% static 'img/icon-dot-gov.svg' %}" role="img"
|
||||||
|
@ -159,14 +159,14 @@
|
||||||
|
|
||||||
{% block wrapper %}
|
{% block wrapper %}
|
||||||
{% block wrapperdiv %}
|
{% block wrapperdiv %}
|
||||||
<div id="wrapper">
|
<div id="wrapper" class="wrapper--padding-top-6">
|
||||||
{% endblock wrapperdiv %}
|
{% endblock wrapperdiv %}
|
||||||
{% block messages %}
|
{% block messages %}
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
<ul class="messages">
|
<ul class="messages">
|
||||||
{% for message in messages %}
|
{% for message in messages %}
|
||||||
{% if 'base' in message.extra_tags %}
|
{% if 'base' in message.extra_tags %}
|
||||||
<li{% if message.tags %} class="{{ message.tags }}" {% endif %}>
|
<li{% if message.tags %} class="{{ message.tags }}" {% endif %}">
|
||||||
{{ message }}
|
{{ message }}
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
<ul class="messages">
|
<ul class="messages">
|
||||||
{% for message in messages %}
|
{% for message in messages %}
|
||||||
<li {% if message.tags %} class="{{ message.tags }}" {% endif %}>
|
<li {% if message.tags %} class="{{ message.tags }}" {% endif %}">
|
||||||
{{ message }}
|
{{ message }}
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
{% comment %} This view provides a detail button that can be used to show/hide content {% endcomment %}
|
{% comment %} This view provides a detail button that can be used to show/hide content {% endcomment %}
|
||||||
<details class="margin-top-1 dja-detail-table" aria-role="button" {% if start_open %}open{% else %}closed{% endif %}>
|
<details class="margin-top-1 dja-detail-table" aria-role="button" {% if start_open %}open{% else %}closed{% endif %}">
|
||||||
<summary class="padding-1 padding-left-0 dja-details-summary">Details</summary>
|
<summary class="padding-1 padding-left-0 dja-details-summary">Details</summary>
|
||||||
<div class="grid-container margin-left-0 padding-left-0 padding-right-0 dja-details-contents">
|
<div class="grid-container margin-left-0 padding-left-0 padding-right-0 dja-details-contents">
|
||||||
{% block detail_content %}
|
{% block detail_content %}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block help_text %}
|
{% block help_text %}
|
||||||
<div class="help margin-bottom-1" {% if field.field.id_for_label %} id="{{ field.field.id_for_label }}_helptext"{% endif %}>
|
<div class="help margin-bottom-1" {% if field.field.id_for_label %} id="{{ field.field.id_for_label }}_helptext"{% endif %}">
|
||||||
{% if field.field.name == "state" %}
|
{% if field.field.name == "state" %}
|
||||||
<div>{{ state_help_message }}</div>
|
<div>{{ state_help_message }}</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
<ul class="mulitple-choice">
|
<ul class="mulitple-choice">
|
||||||
{% for choice in choices %}
|
{% for choice in choices %}
|
||||||
{% if choice.reset %}
|
{% if choice.reset %}
|
||||||
<li{% if choice.selected %} class="selected"{% endif %}>
|
<li{% if choice.selected %} class="selected"{% endif %}">
|
||||||
<a href="{{ choice.query_string|iriencode }}" title="{{ choice.display }}">{{ choice.display }}</a>
|
<a href="{{ choice.query_string|iriencode }}" title="{{ choice.display }}">{{ choice.display }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for choice in choices %}
|
{% for choice in choices %}
|
||||||
{% if not choice.reset %}
|
{% if not choice.reset %}
|
||||||
<li{% if choice.selected %} class="selected"{% endif %}>
|
<li{% if choice.selected %} class="selected"{% endif %}">
|
||||||
{% if choice.selected and choice.exclude_query_string %}
|
{% if choice.selected and choice.exclude_query_string %}
|
||||||
<a class="choice-filter choice-filter--checked" href="{{ choice.exclude_query_string|iriencode }}">{{ choice.display }}
|
<a class="choice-filter choice-filter--checked" href="{{ choice.exclude_query_string|iriencode }}">{{ choice.display }}
|
||||||
<svg class="usa-icon position-absolute z-0 left-0" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
<svg class="usa-icon position-absolute z-0 left-0" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
|
|
|
@ -37,6 +37,9 @@
|
||||||
</nav>
|
</nav>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock breadcrumb %}
|
{% endblock breadcrumb %}
|
||||||
|
|
||||||
|
{% include "includes/form_errors.html" with form=form %}
|
||||||
|
|
||||||
<h1>Add a domain manager</h1>
|
<h1>Add a domain manager</h1>
|
||||||
{% if has_organization_feature_flag %}
|
{% if has_organization_feature_flag %}
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
{% block title %}{{ domain.name }} | {% endblock %}
|
{% block title %}{{ domain.name }} | {% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="grid-container">
|
<div class="grid-container grid-container--widescreen">
|
||||||
|
|
||||||
<div class="grid-row grid-gap">
|
<div class="grid-row grid-gap {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
<div class="tablet:grid-col-3 ">
|
<div class="tablet:grid-col-3 ">
|
||||||
<p class="font-body-md margin-top-0 margin-bottom-2
|
<p class="font-body-md margin-top-0 margin-bottom-2
|
||||||
text-primary-darker text-semibold domain-name-wrap"
|
text-primary-darker text-semibold domain-name-wrap"
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock breadcrumb %}
|
{% endblock breadcrumb %}
|
||||||
|
|
||||||
<h1>DNSSEC</h1>
|
<h1 id="domain-dnssec">DNSSEC</h1>
|
||||||
|
|
||||||
<p>DNSSEC, or DNS Security Extensions, is an additional security layer to protect your website. Enabling DNSSEC ensures that when someone visits your domain, they can be certain that it’s connecting to the correct server, preventing potential hijacking or tampering with your domain's records.</p>
|
<p>DNSSEC, or DNS Security Extensions, is an additional security layer to protect your website. Enabling DNSSEC ensures that when someone visits your domain, they can be certain that it’s connecting to the correct server, preventing potential hijacking or tampering with your domain's records.</p>
|
||||||
|
|
||||||
|
@ -78,7 +78,11 @@
|
||||||
aria-labelledby="Are you sure you want to continue?"
|
aria-labelledby="Are you sure you want to continue?"
|
||||||
aria-describedby="Your DNSSEC records will be deleted from the registry."
|
aria-describedby="Your DNSSEC records will be deleted from the registry."
|
||||||
>
|
>
|
||||||
{% include 'includes/modal.html' with modal_heading="Are you sure you want to disable DNSSEC?" modal_button=modal_button|safe %}
|
{% include 'includes/modal.html' with modal_heading="Are you sure you want to disable DNSSEC?" modal_button_id="disable-dnssec-button" modal_button_text="Confirm" modal_button_class="usa-button--secondary" %}
|
||||||
</div>
|
</div>
|
||||||
|
<form method="post" id="disable-dnssec-form">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="hidden" name="disable_dnssec" value="1">
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %} {# domain_content #}
|
{% endblock %} {# domain_content #}
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
{% include "includes/form_errors.html" with form=form %}
|
{% include "includes/form_errors.html" with form=form %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<h1>DS data</h1>
|
<h1 id="domain-dsdata">DS data</h1>
|
||||||
|
|
||||||
<p>In order to enable DNSSEC, you must first configure it with your DNS hosting service.</p>
|
<p>In order to enable DNSSEC, you must first configure it with your DNS hosting service.</p>
|
||||||
|
|
||||||
|
@ -141,7 +141,15 @@
|
||||||
aria-describedby="Your DNSSEC records will be deleted from the registry."
|
aria-describedby="Your DNSSEC records will be deleted from the registry."
|
||||||
data-force-action
|
data-force-action
|
||||||
>
|
>
|
||||||
{% include 'includes/modal.html' with cancel_button_resets_ds_form=True modal_heading="Warning: You are about to remove all DS records on your domain." modal_description="To fully disable DNSSEC: In addition to removing your DS records here, you’ll need to delete the DS records at your DNS host. To avoid causing your domain to appear offline, you should wait to delete your DS records at your DNS host until the Time to Live (TTL) expires. This is often less than 24 hours, but confirm with your provider." modal_button=modal_button|safe %}
|
{% include 'includes/modal.html' with cancel_button_resets_ds_form=True modal_heading="Warning: You are about to remove all DS records on your domain." modal_description="To fully disable DNSSEC: In addition to removing your DS records here, you’ll need to delete the DS records at your DNS host. To avoid causing your domain to appear offline, you should wait to delete your DS records at your DNS host until the Time to Live (TTL) expires. This is often less than 24 hours, but confirm with your provider." modal_button_id="disable-override-click-button" modal_button_text="Remove all DS data" modal_button_class="usa-button--secondary" %}
|
||||||
</div>
|
</div>
|
||||||
|
<form method="post" id="disable-override-click-form">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="hidden" name="disable-override-click" value="1">
|
||||||
|
</form>
|
||||||
|
<form method="post" id="btn-cancel-click-form">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="hidden" name="btn-cancel-click" value="1">
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %} {# domain_content #}
|
{% endblock %} {# domain_content #}
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
|
|
||||||
{% block title %}{{form_titles|get_item:steps.current}} | Request a .gov | {% endblock %}
|
{% block title %}{{form_titles|get_item:steps.current}} | Request a .gov | {% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="grid-container">
|
<div class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-row grid-gap">
|
<div class="grid-row grid-gap {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
<div class="tablet:grid-col-3">
|
<div class="tablet:grid-col-3">
|
||||||
{% include 'domain_request_sidebar.html' %}
|
{% include 'domain_request_sidebar.html' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tablet:grid-col-9">
|
<div class="tablet:grid-col-9">
|
||||||
<main id="main-content" class="grid-container register-form-step">
|
<main id="main-content" class="register-form-step">
|
||||||
<input type="hidden" class="display-none" id="wizard-domain-request-id" value="{{domain_request_id}}"/>
|
<input type="hidden" class="display-none" id="wizard-domain-request-id" value="{{domain_request_id}}"/>
|
||||||
{% if steps.current == steps.first %}
|
{% if steps.current == steps.first %}
|
||||||
{% if portfolio %}
|
{% if portfolio %}
|
||||||
|
@ -130,9 +130,17 @@
|
||||||
aria-describedby="Are you sure you want to submit a domain request?"
|
aria-describedby="Are you sure you want to submit a domain request?"
|
||||||
data-force-action
|
data-force-action
|
||||||
>
|
>
|
||||||
{% include 'includes/modal.html' with is_domain_request_form=True review_form_is_complete=review_form_is_complete modal_heading=modal_heading|safe modal_description=modal_description|safe modal_button=modal_button|safe %}
|
{% if review_form_is_complete %}
|
||||||
|
{% include 'includes/modal.html' with modal_heading="You are about to submit a domain request for " domain_name_modal=requested_domain__name modal_description="Once you submit this request, you won’t be able to edit it until we review it. You’ll only be able to withdraw your request." modal_button_id="domain-request-form-submit-button" modal_button_text="Submit request" %}
|
||||||
|
{% else %}
|
||||||
|
{% include 'includes/modal.html' with modal_heading="Your request form is incomplete" modal_description='This request cannot be submitted yet. Return to the request and visit the steps that are marked as "incomplete."' modal_button_text="Return to request" cancel_button_only=True %}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<form method="post" id="submit-domain-request-form">
|
||||||
|
{% csrf_token %}
|
||||||
|
</form>
|
||||||
|
|
||||||
{% block after_form_content %}{% endblock %}
|
{% block after_form_content %}{% endblock %}
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
{% block title %} Start a request | {% endblock %}
|
{% block title %} Start a request | {% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main id="main-content" class="grid-container">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-col desktop:grid-offset-2 desktop:grid-col-8">
|
<div class="grid-row {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
|
<div class="grid-col {% if is_widescreen_centered %}desktop:grid-offset-2 {% endif %} desktop:grid-col-8">
|
||||||
|
|
||||||
<form class="usa-form usa-form--extra-large" method="post" novalidate>
|
<form class="usa-form usa-form--extra-large" method="post" novalidate>
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
|
@ -8,8 +8,9 @@
|
||||||
{% endblock wrapperdiv %}
|
{% endblock wrapperdiv %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="grid-container">
|
<div class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-col desktop:grid-offset-2 desktop:grid-col-8">
|
<div class="grid-row {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
|
<div class="grid-col {% if is_widescreen_centered %}desktop:grid-offset-2 {% endif %} desktop:grid-col-8">
|
||||||
|
|
||||||
|
|
||||||
<h1>Withdraw request for {{ DomainRequest.requested_domain.name }}?</h1>
|
<h1>Withdraw request for {{ DomainRequest.requested_domain.name }}?</h1>
|
||||||
|
@ -20,6 +21,7 @@
|
||||||
<a href="{% url 'domain-request-status' DomainRequest.id %}">Cancel</a></p>
|
<a href="{% url 'domain-request-status' DomainRequest.id %}">Cancel</a></p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<li class="usa-sidenav__item">
|
<li class="usa-sidenav__item">
|
||||||
{% url 'domain-dns' pk=domain.id as url %}
|
{% url 'domain-dns' pk=domain.id as url %}
|
||||||
<a href="{{ url }}" {% if request.path|startswith:url %}class="usa-current"{% endif %}>
|
<a href="{{ url }}" {% if request.path|startswith:url %}class="usa-current"{% endif %}">
|
||||||
DNS
|
DNS
|
||||||
</a>
|
</a>
|
||||||
{% if request.path|startswith:url %}
|
{% if request.path|startswith:url %}
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
{% if domain_manager_roles %}
|
{% if domain_manager_roles %}
|
||||||
<section class="section-outlined">
|
<section class="section-outlined" id="domain-managers">
|
||||||
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table--stacked dotgov-table">
|
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table--stacked dotgov-table">
|
||||||
<h2 class> Domain managers </h2>
|
<h2 class> Domain managers </h2>
|
||||||
<caption class="sr-only">Domain managers</caption>
|
<caption class="sr-only">Domain managers</caption>
|
||||||
|
@ -89,12 +89,13 @@
|
||||||
aria-describedby="You will be removed from this domain"
|
aria-describedby="You will be removed from this domain"
|
||||||
data-force-action
|
data-force-action
|
||||||
>
|
>
|
||||||
<form method="POST" action="{% url "domain-user-delete" pk=domain.id user_pk=item.permission.user.id %}">
|
{% with domain_name=domain.name|force_escape counter_str=forloop.counter|stringformat:"s" %}
|
||||||
{% with domain_name=domain.name|force_escape %}
|
{% include 'includes/modal.html' with modal_heading="Are you sure you want to remove yourself as a domain manager?" modal_description="You will no longer be able to manage the domain <strong>"|add:domain_name|add:"</strong>."|safe modal_button_id="user-delete-button-"|add:counter_str|safe modal_button_text="Yes, remove myself" modal_button_class="usa-button--secondary" %}
|
||||||
{% include 'includes/modal.html' with modal_heading="Are you sure you want to remove yourself as a domain manager?" modal_description="You will no longer be able to manage the domain <strong>"|add:domain_name|add:"</strong>."|safe modal_button=modal_button_self|safe %}
|
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
|
<form method="POST" id="user-delete-form-{{ forloop.counter }}" action="{% url "domain-user-delete" pk=domain.id user_pk=item.permission.user.id %}" >
|
||||||
|
{% csrf_token %}
|
||||||
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div
|
<div
|
||||||
class="usa-modal"
|
class="usa-modal"
|
||||||
|
@ -103,12 +104,13 @@
|
||||||
aria-describedby="{{ item.permission.user.email }} will be removed"
|
aria-describedby="{{ item.permission.user.email }} will be removed"
|
||||||
data-force-action
|
data-force-action
|
||||||
>
|
>
|
||||||
<form method="POST" action="{% url "domain-user-delete" pk=domain.id user_pk=item.permission.user.id %}">
|
{% with email=item.permission.user.email|default:item.permission.user|force_escape domain_name=domain.name|force_escape counter_str=forloop.counter|stringformat:"s" %}
|
||||||
{% with email=item.permission.user.email|default:item.permission.user|force_escape domain_name=domain.name|force_escape %}
|
{% include 'includes/modal.html' with modal_heading="Are you sure you want to remove " heading_value=email|add:"?" modal_description="<strong>"|add:email|add:"</strong> will no longer be able to manage the domain <strong>"|add:domain_name|add:"</strong>."|safe modal_button_id="user-delete-button-"|add:counter_str|safe modal_button_text="Yes, remove domain manager" modal_button_class="usa-button--secondary" %}
|
||||||
{% include 'includes/modal.html' with modal_heading="Are you sure you want to remove " heading_value=email|add:"?" modal_description="<strong>"|add:email|add:"</strong> will no longer be able to manage the domain <strong>"|add:domain_name|add:"</strong>."|safe modal_button=modal_button|safe %}
|
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
|
<form method="POST" id="user-delete-form-{{ forloop.counter }}" action="{% url "domain-user-delete" pk=domain.id user_pk=item.permission.user.id %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<input
|
<input
|
||||||
|
|
|
@ -5,12 +5,12 @@
|
||||||
{% block title %} Home | {% endblock %}
|
{% block title %} Home | {% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main id="main-content" class="grid-container {% if is_widescreen_mode %} grid-container--widescreen{% endif %}">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
{# the entire logged in page goes here #}
|
{# the entire logged in page goes here #}
|
||||||
|
|
||||||
{% block homepage_content %}
|
{% block homepage_content %}
|
||||||
<div class="tablet:grid-col-11 desktop:grid-col-10 tablet:grid-offset-1">
|
<div class="tablet:grid-col-11 desktop:grid-col-10 {% if is_widescreen_centered %}tablet:grid-offset-1{% endif %}">
|
||||||
{% block messages %}
|
{% block messages %}
|
||||||
{% include "includes/form_messages.html" %}
|
{% include "includes/form_messages.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<div class="margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert usa-alert--error">
|
<div class="usa-alert usa-alert--error">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<h4 class="usa-alert__heading">
|
<h4 class="usa-alert__heading">
|
||||||
Header
|
Header
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<section class="usa-site-alert usa-site-alert--info margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<section class="usa-site-alert usa-site-alert--info margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert">
|
<div class="usa-alert">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<h4 class="usa-alert__heading">
|
<h4 class="usa-alert__heading">
|
||||||
Header
|
Header
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<section class="usa-site-alert usa-site-alert--emergency usa-site-alert--hot-pink margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<section class="usa-site-alert usa-site-alert--emergency usa-site-alert--hot-pink margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert">
|
<div class="usa-alert">
|
||||||
<div class="usa-alert__body {% if add_body_class %}{{ add_body_class }}{% endif %} {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body {% if add_body_class %}{{ add_body_class }}{% endif %} usa-alert__body--widescreen">
|
||||||
<p class="usa-alert__text maxw-none">
|
<p class="usa-alert__text maxw-none">
|
||||||
<strong>Attention:</strong> You are on a test site.
|
<strong>Attention:</strong> You are on a test site.
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<section class="usa-site-alert usa-site-alert--emergency margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<section class="usa-site-alert usa-site-alert--emergency margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert">
|
<div class="usa-alert">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<h3 class="usa-alert__heading">
|
<h3 class="usa-alert__heading">
|
||||||
Service disruption
|
Service disruption
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<section class="usa-site-alert usa-site-alert--emergency margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<section class="usa-site-alert usa-site-alert--emergency margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert">
|
<div class="usa-alert">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<h3 class="usa-alert__heading">
|
<h3 class="usa-alert__heading">
|
||||||
Header here
|
Header here
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<section class="usa-site-alert usa-site-alert--emergency margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<section class="usa-site-alert usa-site-alert--emergency margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert">
|
<div class="usa-alert">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<h3 class="usa-alert__heading">
|
<h3 class="usa-alert__heading">
|
||||||
System outage
|
System outage
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<div class="margin-y-0 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert usa-alert--warning">
|
<div class="usa-alert usa-alert--warning">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<h4 class="usa-alert__heading">
|
<h4 class="usa-alert__heading">
|
||||||
Header
|
Header
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{% load custom_filters %}
|
{% load custom_filters %}
|
||||||
{% load static url_helpers %}
|
{% load static url_helpers %}
|
||||||
<main id="main-content" class="grid-container">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-col desktop:grid-offset-2 desktop:grid-col-8">
|
<div class="grid-row {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
|
<div class="grid-col {% if is_widescreen_centered %}desktop:grid-offset-2 {% endif %} desktop:grid-col-8">
|
||||||
{% block breadcrumb %}
|
{% block breadcrumb %}
|
||||||
{% if portfolio %}
|
{% if portfolio %}
|
||||||
{% url 'domain-requests' as url %}
|
{% url 'domain-requests' as url %}
|
||||||
|
@ -139,7 +140,7 @@
|
||||||
{% endblock modify_request %}
|
{% endblock modify_request %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid-col desktop:grid-offset-2 maxw-tablet">
|
<div class="grid-col {% if is_widescreen_centered %}desktop:grid-offset-2 maxw-tablet{% endif %}">
|
||||||
{% block request_summary_header %}
|
{% block request_summary_header %}
|
||||||
<h2 class="text-primary-darker"> Summary of your domain request </h2>
|
<h2 class="text-primary-darker"> Summary of your domain request </h2>
|
||||||
{% endblock request_summary_header%}
|
{% endblock request_summary_header%}
|
||||||
|
@ -233,4 +234,5 @@
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endblock request_summary%}
|
{% endblock request_summary%}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</main>
|
</main>
|
|
@ -13,7 +13,7 @@
|
||||||
<span id="portfolio-js-value" data-portfolio="{{ portfolio.id }}"></span>
|
<span id="portfolio-js-value" data-portfolio="{{ portfolio.id }}"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="section-outlined__search {% if portfolio %} mobile:grid-col-12 desktop:grid-col-6{% endif %} {% if is_widescreen_mode %} section-outlined__search--widescreen {% endif %}">
|
<div class="section-outlined__search section-outlined__search--widescreen {% if portfolio %}mobile:grid-col-12 desktop:grid-col-6{% endif %}">
|
||||||
<section aria-label="Domain requests search component" class="margin-top-2">
|
<section aria-label="Domain requests search component" class="margin-top-2">
|
||||||
<form class="usa-search usa-search--small" method="POST" role="search">
|
<form class="usa-search usa-search--small" method="POST" role="search">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
{% if has_domain_renewal_flag and num_expiring_domains > 0 and has_any_domains_portfolio_permission %}
|
{% if has_domain_renewal_flag and num_expiring_domains > 0 and has_any_domains_portfolio_permission %}
|
||||||
<section class="usa-site-alert usa-site-alert--info margin-bottom-2 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<section class="usa-site-alert usa-site-alert--info margin-bottom-2 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert">
|
<div class="usa-alert">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<p class="usa-alert__text maxw-none">
|
<p class="usa-alert__text maxw-none">
|
||||||
{% if num_expiring_domains == 1%}
|
{% if num_expiring_domains == 1%}
|
||||||
One domain will expire soon. Go to "Manage" to renew the domain. <a href="#" id="link-expiring-domains" class="usa-link">Show expiring domain.</a>
|
One domain will expire soon. Go to "Manage" to renew the domain. <a href="#" id="link-expiring-domains" class="usa-link">Show expiring domain.</a>
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
<!-- Embedding the portfolio value in a data attribute -->
|
<!-- Embedding the portfolio value in a data attribute -->
|
||||||
<span id="portfolio-js-value" data-portfolio="{{ portfolio.id }}"></span>
|
<span id="portfolio-js-value" data-portfolio="{{ portfolio.id }}"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="section-outlined__search {% if portfolio %} mobile:grid-col-12 desktop:grid-col-6{% endif %} {% if is_widescreen_mode %} section-outlined__search--widescreen {% endif %}">
|
<div class="section-outlined__search section-outlined__search--widescreen {% if portfolio %}mobile:grid-col-12 desktop:grid-col-6{% endif %}">
|
||||||
<section aria-label="Domains search component" class="margin-top-2">
|
<section aria-label="Domains search component" class="margin-top-2">
|
||||||
<form class="usa-search usa-search--small" method="POST" role="search">
|
<form class="usa-search usa-search--small" method="POST" role="search">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
{% if has_domain_renewal_flag and num_expiring_domains > 0 and not portfolio %}
|
{% if has_domain_renewal_flag and num_expiring_domains > 0 and not portfolio %}
|
||||||
<section class="usa-site-alert usa-site-alert--info margin-bottom-2 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
<section class="usa-site-alert usa-site-alert--info margin-bottom-2 {% if add_class %}{{ add_class }}{% endif %}" aria-label="Site alert">
|
||||||
<div class="usa-alert">
|
<div class="usa-alert">
|
||||||
<div class="usa-alert__body {% if is_widescreen_mode %}usa-alert__body--widescreen{% endif %}">
|
<div class="usa-alert__body usa-alert__body--widescreen">
|
||||||
<p class="usa-alert__text maxw-none">
|
<p class="usa-alert__text maxw-none">
|
||||||
{% if num_expiring_domains == 1%}
|
{% if num_expiring_domains == 1%}
|
||||||
One domain will expire soon. Go to "Manage" to renew the domain. <a href="#" id="link-expiring-domains" class="usa-link">Show expiring domain.</a>
|
One domain will expire soon. Go to "Manage" to renew the domain. <a href="#" id="link-expiring-domains" class="usa-link">Show expiring domain.</a>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<footer class="usa-footer">
|
<footer class="usa-footer">
|
||||||
<div class="usa-footer__secondary-section">
|
<div class="usa-footer__secondary-section">
|
||||||
<div class="grid-container {% if is_widescreen_mode %} grid-container--widescreen{% endif %}">
|
<div class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-row grid-gap">
|
<div class="grid-row grid-gap">
|
||||||
<div
|
<div
|
||||||
class="
|
class="
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
<div class="usa-footer__contact-links
|
<div class="usa-footer__contact-links
|
||||||
mobile-lg:grid-col-6 flex-align-self-center"
|
mobile-lg:grid-col-6 flex-align-self-center"
|
||||||
>
|
>
|
||||||
<address class="usa-footer__address">
|
<address class="usa-footer__address maxw-none">
|
||||||
<div class="usa-footer__contact-info grid-row grid-gap-md">
|
<div class="usa-footer__contact-info grid-row grid-gap-md">
|
||||||
{% if show_manage_your_domains %}
|
{% if show_manage_your_domains %}
|
||||||
<div class="grid-col-auto">
|
<div class="grid-col-auto">
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
class="usa-identifier__section usa-identifier__section--masthead"
|
class="usa-identifier__section usa-identifier__section--masthead"
|
||||||
aria-label="Agency identifier"
|
aria-label="Agency identifier"
|
||||||
>
|
>
|
||||||
<div class="usa-identifier__container {% if is_widescreen_mode %} usa-identifier__container--widescreen {% endif %}">
|
<div class="usa-identifier__container usa-identifier__container--widescreen padding-x--widescreen">
|
||||||
<div class="usa-identifier__logos">
|
<div class="usa-identifier__logos">
|
||||||
<a rel="noopener noreferrer" target="_blank" href="https://www.cisa.gov" class="usa-identifier__logo"
|
<a rel="noopener noreferrer" target="_blank" href="https://www.cisa.gov" class="usa-identifier__logo"
|
||||||
><img
|
><img
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
class="usa-identifier__section usa-identifier__section--required-links"
|
class="usa-identifier__section usa-identifier__section--required-links"
|
||||||
aria-label="Important links"
|
aria-label="Important links"
|
||||||
>
|
>
|
||||||
<div class="usa-identifier__container {% if is_widescreen_mode %} usa-identifier__container--widescreen {% endif %}">
|
<div class="usa-identifier__container usa-identifier__container--widescreen padding-x--widescreen">
|
||||||
<ul class="usa-identifier__required-links-list">
|
<ul class="usa-identifier__required-links-list">
|
||||||
<li class="usa-identifier__required-links-item">
|
<li class="usa-identifier__required-links-item">
|
||||||
<a rel="noopener noreferrer" target="_blank" href="{% public_site_url 'about/' %}"
|
<a rel="noopener noreferrer" target="_blank" href="{% public_site_url 'about/' %}"
|
||||||
|
@ -119,7 +119,7 @@
|
||||||
class="usa-identifier__section usa-identifier__section--usagov"
|
class="usa-identifier__section usa-identifier__section--usagov"
|
||||||
aria-label="U.S. government information and services"
|
aria-label="U.S. government information and services"
|
||||||
>
|
>
|
||||||
<div class="usa-identifier__container {% if is_widescreen_mode %} usa-identifier__container--widescreen {% endif %}">
|
<div class="usa-identifier__container usa-identifier__container--widescreen padding-x--widescreen">
|
||||||
<div class="usa-identifier__usagov-description">
|
<div class="usa-identifier__usagov-description">
|
||||||
Looking for U.S. government information and services?
|
Looking for U.S. government information and services?
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{% if form.errors %}
|
{% if form.errors %}
|
||||||
|
<div id="form-errors">
|
||||||
{% for error in form.non_field_errors %}
|
{% for error in form.non_field_errors %}
|
||||||
<div class="usa-alert usa-alert--error usa-alert--slim margin-bottom-2">
|
<div class="usa-alert usa-alert--error usa-alert--slim margin-bottom-2" role="alert">
|
||||||
<div class="usa-alert__body">
|
<div class="usa-alert__body">
|
||||||
{{ error|escape }}
|
{{ error|escape }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -15,4 +16,5 @@
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% load static %}
|
{% load static %}
|
||||||
|
|
||||||
<header class="usa-header usa-header--basic">
|
<header class="usa-header usa-header--basic">
|
||||||
<div class="usa-nav-container {% if is_widescreen_mode %} usa-nav-container--widescreen {% endif %}">
|
<div class="usa-nav-container usa-nav-container--widescreen padding-x--widescreen">
|
||||||
<div class="usa-navbar">
|
<div class="usa-navbar">
|
||||||
{% include "includes/gov_extended_logo.html" with logo_clickable=logo_clickable %}
|
{% include "includes/gov_extended_logo.html" with logo_clickable=logo_clickable %}
|
||||||
<button type="button" class="usa-menu-btn">Menu</button>
|
<button type="button" class="usa-menu-btn">Menu</button>
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
{% load custom_filters %}
|
{% load custom_filters %}
|
||||||
|
|
||||||
<header class="usa-header usa-header--extended">
|
<header class="usa-header usa-header--extended">
|
||||||
<div class="usa-navbar {% if is_widescreen_mode %} usa-navbar--widescreen {% endif %}">
|
<div class="usa-navbar usa-navbar--widescreen padding-x--widescreen">
|
||||||
{% include "includes/gov_extended_logo.html" with logo_clickable=logo_clickable %}
|
{% include "includes/gov_extended_logo.html" with logo_clickable=logo_clickable %}
|
||||||
<button type="button" class="usa-menu-btn">Menu</button>
|
<button type="button" class="usa-menu-btn">Menu</button>
|
||||||
</div>
|
</div>
|
||||||
{% block usa_nav %}
|
{% block usa_nav %}
|
||||||
<nav class="usa-nav" aria-label="Primary navigation">
|
<nav class="usa-nav" aria-label="Primary navigation">
|
||||||
<div class="usa-nav__inner {% if is_widescreen_mode %} usa-nav__inner--widescreen {% endif %}">
|
<div class="usa-nav__inner usa-nav__inner--widescreen padding-x--widescreen">
|
||||||
<button type="button" class="usa-nav__close">
|
<button type="button" class="usa-nav__close">
|
||||||
<img src="{%static 'img/usa-icons/close.svg'%}" role="img" alt="Close" />
|
<img src="{%static 'img/usa-icons/close.svg'%}" role="img" alt="Close" />
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<section class="section-outlined members margin-top-0 section-outlined--border-base-light" id="members">
|
<section class="section-outlined members margin-top-0 section-outlined--border-base-light" id="members">
|
||||||
<div class="section-outlined__header margin-bottom-3 grid-row">
|
<div class="section-outlined__header margin-bottom-3 grid-row">
|
||||||
<!-- ---------- SEARCH ---------- -->
|
<!-- ---------- SEARCH ---------- -->
|
||||||
<div class="section-outlined__search mobile:grid-col-12 desktop:grid-col-6 {% if is_widescreen_mode %} section-outlined__search--widescreen {% endif %}">
|
<div class="section-outlined__search mobile:grid-col-12 desktop:grid-col-6 section-outlined__search--widescreen">
|
||||||
<section aria-label="Members search component" class="margin-top-2">
|
<section aria-label="Members search component" class="margin-top-2">
|
||||||
<form class="usa-search usa-search--small" method="POST" role="search">
|
<form class="usa-search usa-search--small" method="POST" role="search">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{% load static form_helpers url_helpers %}
|
{% load static form_helpers url_helpers %}
|
||||||
|
{% load custom_filters %}
|
||||||
|
|
||||||
<div class="usa-modal__content">
|
<div class="usa-modal__content">
|
||||||
<div class="usa-modal__main">
|
<div class="usa-modal__main">
|
||||||
|
@ -24,39 +25,51 @@
|
||||||
<div class="usa-modal__footer">
|
<div class="usa-modal__footer">
|
||||||
<ul class="usa-button-group">
|
<ul class="usa-button-group">
|
||||||
<li class="usa-button-group__item">
|
<li class="usa-button-group__item">
|
||||||
{% if not_form and modal_button %}
|
{% if cancel_button_only %}
|
||||||
{{ modal_button }}
|
<button
|
||||||
|
type="button"
|
||||||
|
class="{{ modal_button_class|button_class }}"
|
||||||
|
data-close-modal
|
||||||
|
>
|
||||||
|
{% if modal_button_text %}
|
||||||
|
{{ modal_button_text }}
|
||||||
|
{% else %}
|
||||||
|
Cancel
|
||||||
|
{% endif %}
|
||||||
|
</button>
|
||||||
|
{% elif modal_button_id and modal_button_text %}
|
||||||
|
{% comment %} Adding button id allows for onclick listeners on button by id,
|
||||||
|
which execute form submission on form elsewhere on a page outside modal.{% endcomment %}
|
||||||
|
<button
|
||||||
|
id="{{ modal_button_id }}"
|
||||||
|
type="button"
|
||||||
|
class="{{ modal_button_class|button_class }}"
|
||||||
|
>
|
||||||
|
{{ modal_button_text }}
|
||||||
|
</button>
|
||||||
{% elif modal_button_url and modal_button_text %}
|
{% elif modal_button_url and modal_button_text %}
|
||||||
<a
|
<a
|
||||||
href="{{ modal_button_url }}"
|
href="{{ modal_button_url }}"
|
||||||
type="button"
|
type="button"
|
||||||
class="usa-button"
|
class="{{ modal_button_class|button_class }}"
|
||||||
>
|
>
|
||||||
{{ modal_button_text }}
|
{{ modal_button_text }}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
{{ modal_button }}
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
<li class="usa-button-group__item">
|
<li class="usa-button-group__item">
|
||||||
{% comment %} The cancel button the DS form actually triggers a context change in the view,
|
{% comment %} The cancel button the DS form actually triggers a context change in the view,
|
||||||
in addition to being a close modal hook {% endcomment %}
|
in addition to being a close modal hook {% endcomment %}
|
||||||
{% if cancel_button_resets_ds_form %}
|
{% if cancel_button_resets_ds_form %}
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
class="usa-button usa-button--unstyled padding-105 text-center"
|
class="usa-button usa-button--unstyled padding-105 text-center"
|
||||||
name="btn-cancel-click"
|
id="btn-cancel-click-button"
|
||||||
data-close-modal
|
data-close-modal
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
</form>
|
{% elif not cancel_button_only %}
|
||||||
{% elif not is_domain_request_form or review_form_is_complete %}
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="usa-button usa-button--unstyled padding-105 text-center"
|
class="usa-button usa-button--unstyled padding-105 text-center"
|
||||||
|
@ -72,20 +85,17 @@
|
||||||
{% comment %} The cancel button the DS form actually triggers a context change in the view,
|
{% comment %} The cancel button the DS form actually triggers a context change in the view,
|
||||||
in addition to being a close modal hook {% endcomment %}
|
in addition to being a close modal hook {% endcomment %}
|
||||||
{% if cancel_button_resets_ds_form %}
|
{% if cancel_button_resets_ds_form %}
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
class="usa-button usa-modal__close"
|
class="usa-button usa-modal__close"
|
||||||
aria-label="Close this window"
|
aria-label="Close this window"
|
||||||
name="btn-cancel-click"
|
id="btn-cancel-click-close-button"
|
||||||
data-close-modal
|
data-close-modal
|
||||||
>
|
>
|
||||||
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img">
|
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img">
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#close"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#close"></use>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{% load custom_filters %}
|
{% load custom_filters %}
|
||||||
{% load static url_helpers %}
|
{% load static url_helpers %}
|
||||||
<main id="main-content" class="grid-container">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-col desktop:grid-offset-2 desktop:grid-col-8">
|
<div class="grid-row {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
|
<div class="grid-col desktop:grid-col-8 {% if is_widescreen_centered %}desktop:grid-offset-2{% endif %}">
|
||||||
{% block breadcrumb %}
|
{% block breadcrumb %}
|
||||||
{% if portfolio %}
|
{% if portfolio %}
|
||||||
{% url 'domain-requests' as url %}
|
{% url 'domain-requests' as url %}
|
||||||
|
@ -139,7 +140,7 @@
|
||||||
{% endblock modify_request %}
|
{% endblock modify_request %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid-col desktop:grid-offset-2 maxw-tablet">
|
<div class="grid-col {% if is_widescreen_centered %}desktop:grid-offset-2 maxw-tablet{% endif %}">
|
||||||
{% block request_summary_header %}
|
{% block request_summary_header %}
|
||||||
<h2 class="text-primary-darker"> Summary of your domain request </h2>
|
<h2 class="text-primary-darker"> Summary of your domain request </h2>
|
||||||
{% endblock request_summary_header%}
|
{% endblock request_summary_header%}
|
||||||
|
@ -237,4 +238,5 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock request_summary%}
|
{% endblock request_summary%}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</main>
|
</main>
|
|
@ -26,7 +26,6 @@
|
||||||
</form>
|
</form>
|
||||||
{% elif not form.full_name.value and not form.title.value and not form.email.value %}
|
{% elif not form.full_name.value and not form.title.value and not form.email.value %}
|
||||||
<p>
|
<p>
|
||||||
Your senior official is a person within your organization who can authorize domain requests.
|
|
||||||
We don't have information about your organization's senior official. To suggest an update, email <a href="mailto:help@get.gov" class="usa-link">help@get.gov</a>.
|
We don't have information about your organization's senior official. To suggest an update, email <a href="mailto:help@get.gov" class="usa-link">help@get.gov</a>.
|
||||||
</p>
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
|
@ -4,11 +4,12 @@
|
||||||
<div id="wrapper" class="{% block wrapper_class %}wrapper--padding-top-6{% endblock %}">
|
<div id="wrapper" class="{% block wrapper_class %}wrapper--padding-top-6{% endblock %}">
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<main class="grid-container {% if is_widescreen_mode %} grid-container--widescreen{% endif %}">
|
<main class="grid-container grid-container--widescreen">
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
{# the entire logged in page goes here #}
|
{# the entire logged in page goes here #}
|
||||||
|
|
||||||
<div class="tablet:grid-col-11 desktop:grid-col-10 tablet:grid-offset-1">
|
<div class="grid-row {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
|
<div class="tablet:grid-col-11 desktop:grid-col-10 {% if is_widescreen_centered %}tablet:grid-offset-1{% endif %}">
|
||||||
{% block messages %}
|
{% block messages %}
|
||||||
{% include "includes/form_messages.html" %}
|
{% include "includes/form_messages.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -24,6 +25,8 @@
|
||||||
</a></p>
|
</a></p>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
{% endblock content%}
|
{% endblock content%}
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
{% include "includes/form_messages.html" %}
|
{% include "includes/form_messages.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% include "includes/form_errors.html" with form=form %}
|
||||||
|
|
||||||
<h1>Organization</h1>
|
<h1>Organization</h1>
|
||||||
|
|
||||||
<p>The name of your organization will be publicly listed as the domain registrant.</p>
|
<p>The name of your organization will be publicly listed as the domain registrant.</p>
|
||||||
|
@ -33,7 +35,6 @@
|
||||||
To suggest an update, email <a href="mailto:help@get.gov" class="usa-link">help@get.gov</a>.
|
To suggest an update, email <a href="mailto:help@get.gov" class="usa-link">help@get.gov</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% include "includes/form_errors.html" with form=form %}
|
|
||||||
{% include "includes/required_fields.html" %}
|
{% include "includes/required_fields.html" %}
|
||||||
<form class="usa-form usa-form--large desktop:margin-top-4" method="post" novalidate>
|
<form class="usa-form usa-form--large desktop:margin-top-4" method="post" novalidate>
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
|
@ -11,8 +11,9 @@ Edit your User Profile |
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main id="main-content" class="grid-container">
|
<main id="main-content" class="grid-container grid-container--widescreen">
|
||||||
<div class="grid-col desktop:grid-offset-2 desktop:grid-col-8">
|
<div class="grid-row {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
|
||||||
|
<div class="desktop:grid-col-8">
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
{% for message in messages %}
|
{% for message in messages %}
|
||||||
<div class="usa-alert usa-alert--{{ message.tags }} usa-alert--slim margin-bottom-3">
|
<div class="usa-alert usa-alert--{{ message.tags }} usa-alert--slim margin-bottom-3">
|
||||||
|
@ -95,6 +96,7 @@ Edit your User Profile |
|
||||||
{% block content_bottom %}
|
{% block content_bottom %}
|
||||||
{% include "includes/profile_form.html" with form=form %}
|
{% include "includes/profile_form.html" with form=form %}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</main>
|
</main>
|
||||||
{% endblock content_bottom %}
|
{% endblock content_bottom %}
|
||||||
|
|
||||||
|
|
|
@ -290,3 +290,9 @@ def get_dict_value(dictionary, key):
|
||||||
if isinstance(dictionary, dict):
|
if isinstance(dictionary, dict):
|
||||||
return dictionary.get(key, "")
|
return dictionary.get(key, "")
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def button_class(custom_class):
|
||||||
|
default_class = "usa-button"
|
||||||
|
return f"{default_class} {custom_class}" if custom_class else default_class
|
||||||
|
|
|
@ -805,15 +805,6 @@ class DomainDNSSECView(DomainFormBaseView):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
|
|
||||||
has_dnssec_records = self.object.dnssecdata is not None
|
has_dnssec_records = self.object.dnssecdata is not None
|
||||||
|
|
||||||
# Create HTML for the modal button
|
|
||||||
modal_button = (
|
|
||||||
'<button type="submit" '
|
|
||||||
'class="usa-button usa-button--secondary" '
|
|
||||||
'name="disable_dnssec">Confirm</button>'
|
|
||||||
)
|
|
||||||
|
|
||||||
context["modal_button"] = modal_button
|
|
||||||
context["has_dnssec_records"] = has_dnssec_records
|
context["has_dnssec_records"] = has_dnssec_records
|
||||||
context["dnssec_enabled"] = self.request.session.pop("dnssec_enabled", False)
|
context["dnssec_enabled"] = self.request.session.pop("dnssec_enabled", False)
|
||||||
|
|
||||||
|
@ -906,15 +897,6 @@ class DomainDsDataView(DomainFormBaseView):
|
||||||
# to preserve the context["form"]
|
# to preserve the context["form"]
|
||||||
context = super().get_context_data(form=formset)
|
context = super().get_context_data(form=formset)
|
||||||
context["trigger_modal"] = True
|
context["trigger_modal"] = True
|
||||||
# Create HTML for the modal button
|
|
||||||
modal_button = (
|
|
||||||
'<button type="submit" '
|
|
||||||
'class="usa-button usa-button--secondary" '
|
|
||||||
'name="disable-override-click">Remove all DS data</button>'
|
|
||||||
)
|
|
||||||
|
|
||||||
# context to back out of a broken form on all fields delete
|
|
||||||
context["modal_button"] = modal_button
|
|
||||||
return self.render_to_response(context)
|
return self.render_to_response(context)
|
||||||
|
|
||||||
if formset.is_valid() or override:
|
if formset.is_valid() or override:
|
||||||
|
@ -1050,9 +1032,6 @@ class DomainUsersView(DomainBaseView):
|
||||||
# Add conditionals to the context (such as "can_delete_users")
|
# Add conditionals to the context (such as "can_delete_users")
|
||||||
context = self._add_booleans_to_context(context)
|
context = self._add_booleans_to_context(context)
|
||||||
|
|
||||||
# Add modal buttons to the context (such as for delete)
|
|
||||||
context = self._add_modal_buttons_to_context(context)
|
|
||||||
|
|
||||||
# Get portfolio from session (if set)
|
# Get portfolio from session (if set)
|
||||||
portfolio = self.request.session.get("portfolio")
|
portfolio = self.request.session.get("portfolio")
|
||||||
|
|
||||||
|
@ -1149,26 +1128,6 @@ class DomainUsersView(DomainBaseView):
|
||||||
context["can_delete_users"] = can_delete_users
|
context["can_delete_users"] = can_delete_users
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def _add_modal_buttons_to_context(self, context):
|
|
||||||
"""Adds modal buttons (and their HTML) to the context"""
|
|
||||||
# Create HTML for the modal button
|
|
||||||
modal_button = (
|
|
||||||
'<button type="submit" '
|
|
||||||
'class="usa-button usa-button--secondary" '
|
|
||||||
'name="delete_domain_manager">Yes, remove domain manager</button>'
|
|
||||||
)
|
|
||||||
context["modal_button"] = modal_button
|
|
||||||
|
|
||||||
# Create HTML for the modal button when deleting yourself
|
|
||||||
modal_button_self = (
|
|
||||||
'<button type="submit" '
|
|
||||||
'class="usa-button usa-button--secondary" '
|
|
||||||
'name="delete_domain_manager_self">Yes, remove myself</button>'
|
|
||||||
)
|
|
||||||
context["modal_button_self"] = modal_button_self
|
|
||||||
|
|
||||||
return context
|
|
||||||
|
|
||||||
|
|
||||||
class DomainAddUserView(DomainFormBaseView):
|
class DomainAddUserView(DomainFormBaseView):
|
||||||
"""Inside of a domain's user management, a form for adding users.
|
"""Inside of a domain's user management, a form for adding users.
|
||||||
|
|
|
@ -448,34 +448,21 @@ class DomainRequestWizard(DomainRequestWizardPermissionView, TemplateView):
|
||||||
non_org_steps_complete = DomainRequest._form_complete(self.domain_request, self.request)
|
non_org_steps_complete = DomainRequest._form_complete(self.domain_request, self.request)
|
||||||
org_steps_complete = len(self.db_check_for_unlocking_steps()) == len(self.steps)
|
org_steps_complete = len(self.db_check_for_unlocking_steps()) == len(self.steps)
|
||||||
if (not self.is_portfolio and non_org_steps_complete) or (self.is_portfolio and org_steps_complete):
|
if (not self.is_portfolio and non_org_steps_complete) or (self.is_portfolio and org_steps_complete):
|
||||||
modal_button = '<button type="submit" ' 'class="usa-button" ' ">Submit request</button>"
|
|
||||||
context = {
|
context = {
|
||||||
"not_form": False,
|
|
||||||
"form_titles": self.titles,
|
"form_titles": self.titles,
|
||||||
"steps": self.steps,
|
"steps": self.steps,
|
||||||
"visited": self.storage.get("step_history", []),
|
"visited": self.storage.get("step_history", []),
|
||||||
"is_federal": self.domain_request.is_federal(),
|
"is_federal": self.domain_request.is_federal(),
|
||||||
"modal_button": modal_button,
|
|
||||||
"modal_heading": "You are about to submit a domain request for ",
|
|
||||||
"domain_name_modal": str(self.domain_request.requested_domain),
|
|
||||||
"modal_description": "Once you submit this request, you won’t be able to edit it until we review it.\
|
|
||||||
You’ll only be able to withdraw your request.",
|
|
||||||
"review_form_is_complete": True,
|
"review_form_is_complete": True,
|
||||||
"user": self.request.user,
|
"user": self.request.user,
|
||||||
"requested_domain__name": requested_domain_name,
|
"requested_domain__name": requested_domain_name,
|
||||||
}
|
}
|
||||||
else: # form is not complete
|
else: # form is not complete
|
||||||
modal_button = '<button type="button" class="usa-button" data-close-modal>Return to request</button>'
|
|
||||||
context = {
|
context = {
|
||||||
"not_form": True,
|
|
||||||
"form_titles": self.titles,
|
"form_titles": self.titles,
|
||||||
"steps": self.steps,
|
"steps": self.steps,
|
||||||
"visited": self.storage.get("step_history", []),
|
"visited": self.storage.get("step_history", []),
|
||||||
"is_federal": self.domain_request.is_federal(),
|
"is_federal": self.domain_request.is_federal(),
|
||||||
"modal_button": modal_button,
|
|
||||||
"modal_heading": "Your request form is incomplete",
|
|
||||||
"modal_description": 'This request cannot be submitted yet.\
|
|
||||||
Return to the request and visit the steps that are marked as "incomplete."',
|
|
||||||
"review_form_is_complete": False,
|
"review_form_is_complete": False,
|
||||||
"user": self.request.user,
|
"user": self.request.user,
|
||||||
"requested_domain__name": requested_domain_name,
|
"requested_domain__name": requested_domain_name,
|
||||||
|
|
|
@ -109,6 +109,10 @@ def apply_sorting(queryset, request):
|
||||||
sort_by = request.GET.get("sort_by", "id") # Default to 'id'
|
sort_by = request.GET.get("sort_by", "id") # Default to 'id'
|
||||||
order = request.GET.get("order", "asc") # Default to 'asc'
|
order = request.GET.get("order", "asc") # Default to 'asc'
|
||||||
|
|
||||||
|
# Handle special case for 'creator'
|
||||||
|
if sort_by == "creator":
|
||||||
|
sort_by = "creator__email"
|
||||||
|
|
||||||
if order == "desc":
|
if order == "desc":
|
||||||
sort_by = f"-{sort_by}"
|
sort_by = f"-{sort_by}"
|
||||||
return queryset.order_by(sort_by)
|
return queryset.order_by(sort_by)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue