From fab3e1b292cdd33fd62a32cbb5afc65be44ad250 Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Thu, 3 Nov 2022 17:00:26 -0400
Subject: [PATCH 01/50] Add purpose view
---
src/registrar/forms/application_wizard.py | 10 ++++++
.../templates/application_purpose.html | 34 +++++++++++++++++++
2 files changed, 44 insertions(+)
create mode 100644 src/registrar/templates/application_purpose.html
diff --git a/src/registrar/forms/application_wizard.py b/src/registrar/forms/application_wizard.py
index 7c492d56b..2ee7248de 100644
--- a/src/registrar/forms/application_wizard.py
+++ b/src/registrar/forms/application_wizard.py
@@ -65,12 +65,20 @@ class ContactForm(forms.Form):
organization_name = forms.CharField(label="Organization Name")
street_address = forms.CharField(label="Street address")
+class PurposeForm(forms.Form):
+ purpose_field = forms.CharField(label="Purpose", widget=forms.Textarea(
+ attrs={ 'class':'usa-textarea usa-character-count__field',
+ 'id':'with-hint',
+ 'aria-describedby':'instructions',
+ 'maxlength':'500',
+ }))
# List of forms in our wizard. Each entry is a tuple of a name and a form
# subclass
FORMS = [
("organization", OrganizationForm),
("contact", ContactForm),
+ ("purpose", PurposeForm),
]
# Dict to match up the right template with the right step. Keys here must
@@ -78,6 +86,7 @@ FORMS = [
TEMPLATES = {
"organization": "application_organization.html",
"contact": "application_contact.html",
+ "purpose": "application_purpose.html",
}
# We need to pass our page titles as context to the templates, indexed
@@ -85,6 +94,7 @@ TEMPLATES = {
TITLES = {
"organization": "About your organization",
"contact": "Your organization's contact information",
+ "purpose": "Purpose of your domain",
}
diff --git a/src/registrar/templates/application_purpose.html b/src/registrar/templates/application_purpose.html
new file mode 100644
index 000000000..7686358b2
--- /dev/null
+++ b/src/registrar/templates/application_purpose.html
@@ -0,0 +1,34 @@
+
+{% extends 'application_form.html' %}
+{% load widget_tweaks %}
+
+{% block title %}Apply for a .gov domain - Puprose{% endblock %}
+
+{% block form_content %}
+
Purpose of your domain
+
+
Explain how you plan to use this domain. Will you use it for a website and/or email? Are you moving your website from another top-level domain (like .com or .org)?Read about activities that are prohibited on .gov domains.
+
+
All fields are required unless they are marked optional.
+
+
+
+{% endblock %}
From 1a9290ea1504882a3ce32bebc4e59ed147eef8d3 Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Fri, 4 Nov 2022 14:31:50 -0400
Subject: [PATCH 02/50] Add authorizing official view
---
src/registrar/forms/application_wizard.py | 14 +++++
.../application_authorizing_official.html | 55 +++++++++++++++++++
2 files changed, 69 insertions(+)
create mode 100644 src/registrar/templates/application_authorizing_official.html
diff --git a/src/registrar/forms/application_wizard.py b/src/registrar/forms/application_wizard.py
index 2ee7248de..d289b1f55 100644
--- a/src/registrar/forms/application_wizard.py
+++ b/src/registrar/forms/application_wizard.py
@@ -73,11 +73,23 @@ class PurposeForm(forms.Form):
'maxlength':'500',
}))
+class AuthorizingOfficialForm(forms.Form):
+ ao_given_name = forms.CharField(label="First name/given name")
+ ao_middle_name = forms.CharField(
+ required=False,
+ label="Middle name (optional)",
+ )
+ ao_family_name = forms.CharField(label="Last name/family name")
+ ao_title = forms.CharField(label="Title or role in your organization")
+ ao_email = forms.EmailField(label="Email")
+ ao_phone = forms.CharField(label="Phone")
+
# List of forms in our wizard. Each entry is a tuple of a name and a form
# subclass
FORMS = [
("organization", OrganizationForm),
("contact", ContactForm),
+ ("authorizing_official", AuthorizingOfficialForm),
("purpose", PurposeForm),
]
@@ -86,6 +98,7 @@ FORMS = [
TEMPLATES = {
"organization": "application_organization.html",
"contact": "application_contact.html",
+ "authorizing_official": "application_authorizing_official.html",
"purpose": "application_purpose.html",
}
@@ -94,6 +107,7 @@ TEMPLATES = {
TITLES = {
"organization": "About your organization",
"contact": "Your organization's contact information",
+ "authorizing_official": "Authorizing official",
"purpose": "Purpose of your domain",
}
diff --git a/src/registrar/templates/application_authorizing_official.html b/src/registrar/templates/application_authorizing_official.html
new file mode 100644
index 000000000..7144522fa
--- /dev/null
+++ b/src/registrar/templates/application_authorizing_official.html
@@ -0,0 +1,55 @@
+
+{% extends 'application_form.html' %}
+{% load widget_tweaks %}
+{% load static %}
+
+{% block title %}Apply for a .gov domain – Authorizing official{% endblock %}
+
+{% block form_content %}
+{% if wizard.steps.prev %}
+
+{% endif %}
+
Who is the authorizing official for your organization
+
+
Your authorizing official is the person within your organization who can authorize your domain request. This is generally the highest ranking or highest elected official in your organization. Read more about who can serve as an authorizing official.
+
+
+
All fields are required unless they are marked optional.
+
+
+
+{% endblock %}
From 3d24ed04aff2430d455a510916e6952fcccfea5c Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Fri, 4 Nov 2022 17:49:24 -0400
Subject: [PATCH 03/50] Move nav and title to form base tempalte
---
.../application_authorizing_official.html | 20 +++++++++----------
src/registrar/templates/application_form.html | 17 ++++++++++++++--
2 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/src/registrar/templates/application_authorizing_official.html b/src/registrar/templates/application_authorizing_official.html
index 7144522fa..4ad3a30b7 100644
--- a/src/registrar/templates/application_authorizing_official.html
+++ b/src/registrar/templates/application_authorizing_official.html
@@ -3,17 +3,14 @@
{% load widget_tweaks %}
{% load static %}
-{% block title %}Apply for a .gov domain – Authorizing official{% endblock %}
+{% block backnav %}
+ {% with form_name="step__ao" %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
{% block form_content %}
-{% if wizard.steps.prev %}
-
-{% endif %}
+
{% endblock %}
From 302b6f139a9553a5823c956d0500c1d40c7e83d2 Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Fri, 4 Nov 2022 17:58:23 -0400
Subject: [PATCH 04/50] Remove base form content from other views
---
src/registrar/templates/application_contact.html | 14 ++++++++------
.../templates/application_organization.html | 10 +++++++---
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/src/registrar/templates/application_contact.html b/src/registrar/templates/application_contact.html
index d27dfe803..a4d58bb5d 100644
--- a/src/registrar/templates/application_contact.html
+++ b/src/registrar/templates/application_contact.html
@@ -2,7 +2,11 @@
{% extends 'application_form.html' %}
{% load widget_tweaks %}
-{% block title %}Apply for a .gov domain - Your organization's contact information{% endblock %}
+{% block backnav %}
+ {% with form_name="step__org-contact" %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
{% block form_content %}
Your organization's contact information
@@ -14,7 +18,7 @@ of a larger entity. If so, enter information about your part of the larger entit
All fields are required unless they are marked optional.
-
{% endblock %}
diff --git a/src/registrar/templates/application_organization.html b/src/registrar/templates/application_organization.html
index f994a7d1e..c80cad2c1 100644
--- a/src/registrar/templates/application_organization.html
+++ b/src/registrar/templates/application_organization.html
@@ -3,12 +3,16 @@
{% load widget_tweaks %}
{% load dynamic_question_tags %}
-{% block title %}Apply for a .gov domain - About your organization{% endblock %}
+{% block backnav %}
+ {% with form_name="step__about-org" %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
{% block form_content %}
About your organization
-
{% endblock %}
From dc9b8dac0ed5dde3c7c6a12cb7153812303a3a7f Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Mon, 7 Nov 2022 15:27:56 -0500
Subject: [PATCH 05/50] Fix naming for ao fields
---
src/registrar/forms/application_wizard.py | 12 +++++-----
.../application_authorizing_official.html | 24 +++++++++----------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/src/registrar/forms/application_wizard.py b/src/registrar/forms/application_wizard.py
index d289b1f55..416a036d1 100644
--- a/src/registrar/forms/application_wizard.py
+++ b/src/registrar/forms/application_wizard.py
@@ -74,15 +74,15 @@ class PurposeForm(forms.Form):
}))
class AuthorizingOfficialForm(forms.Form):
- ao_given_name = forms.CharField(label="First name/given name")
- ao_middle_name = forms.CharField(
+ given_name = forms.CharField(label="First name/given name")
+ middle_name = forms.CharField(
required=False,
label="Middle name (optional)",
)
- ao_family_name = forms.CharField(label="Last name/family name")
- ao_title = forms.CharField(label="Title or role in your organization")
- ao_email = forms.EmailField(label="Email")
- ao_phone = forms.CharField(label="Phone")
+ family_name = forms.CharField(label="Last name/family name")
+ title = forms.CharField(label="Title or role in your organization")
+ email = forms.EmailField(label="Email")
+ phone = forms.CharField(label="Phone")
# List of forms in our wizard. Each entry is a tuple of a name and a form
# subclass
diff --git a/src/registrar/templates/application_authorizing_official.html b/src/registrar/templates/application_authorizing_official.html
index 4ad3a30b7..71da33340 100644
--- a/src/registrar/templates/application_authorizing_official.html
+++ b/src/registrar/templates/application_authorizing_official.html
@@ -26,23 +26,23 @@
{% csrf_token %}
From be4527386cc165103a129e30c347c69f5e1d048b Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Mon, 7 Nov 2022 15:48:08 -0500
Subject: [PATCH 06/50] Move purpose attributes back to the view
---
src/registrar/forms/application_wizard.py | 7 +------
src/registrar/templates/application_purpose.html | 3 +--
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/registrar/forms/application_wizard.py b/src/registrar/forms/application_wizard.py
index 416a036d1..48ba1be1e 100644
--- a/src/registrar/forms/application_wizard.py
+++ b/src/registrar/forms/application_wizard.py
@@ -66,12 +66,7 @@ class ContactForm(forms.Form):
street_address = forms.CharField(label="Street address")
class PurposeForm(forms.Form):
- purpose_field = forms.CharField(label="Purpose", widget=forms.Textarea(
- attrs={ 'class':'usa-textarea usa-character-count__field',
- 'id':'with-hint',
- 'aria-describedby':'instructions',
- 'maxlength':'500',
- }))
+ purpose_field = forms.CharField(label="Purpose", widget=forms.Textarea())
class AuthorizingOfficialForm(forms.Form):
given_name = forms.CharField(label="First name/given name")
diff --git a/src/registrar/templates/application_purpose.html b/src/registrar/templates/application_purpose.html
index 7686358b2..0d08c1291 100644
--- a/src/registrar/templates/application_purpose.html
+++ b/src/registrar/templates/application_purpose.html
@@ -18,11 +18,10 @@
{{ wizard.form.purpose_field|add_label_class:"usa-label" }}
- {{ wizard.form.purpose_field}}
+ {{ wizard.form.purpose_field|add_class:"usa-textarea usa-character-count__field"|attr:"aria-describedby:instructions"|attr:"maxlength=500" }}
You can enter up to 500 characters
Who is the authorizing official for your organization
Your authorizing official is the person within your organization who can authorize your domain request. This is generally the highest ranking or highest elected official in your organization. Read more about who can serve as an authorizing official.
diff --git a/src/registrar/templates/application_contact.html b/src/registrar/templates/application_contact.html
index a4d58bb5d..2dd5e697e 100644
--- a/src/registrar/templates/application_contact.html
+++ b/src/registrar/templates/application_contact.html
@@ -9,7 +9,6 @@
{% endblock %}
{% block form_content %}
-
Your organization's contact information
What is the name and mailing address of your organization?
Note that only federal agencies can request generic terms like vote.gov.
+
+
We’ll try to give you the domain you want. We first need to make sure your request meets our requirements. We’ll work with you to find the best domain for your organization.
+
+
Here are a few domain examples for your type of organization.
+
+
Most city domains must include the two-letter state abbreviation or clearly spell out the state name. Using phrases like “City of” or “Town of” is optional.
+
Examples:
+
+
www.BlufftonIndiana.gov
+
www.CityofEudoraKS.gov
+
www.WallawallaWA.gov
+
+
+
Some cities don’t have to refer to their state.
+
+
City names that are not shared by any other U.S. city, town, or village can be requested without referring to the state. We use the Census Bureau’s National Places Gazetteer Files to determine if names are unique.
+
Certain cities are so well-known that they may not require a state reference to communicate location. We use the list of U.S. “dateline cities” in the Associated Press Stylebook to make this determination.
+
The 50 largest cities, as measured by population according to the Census Bureau, can have .gov domain names that don’t refer to their state.
+
+
+
+
+
What .gov domain do you want?
+
After you enter your domain, we’ll make sure it’s available and that it meets some of our naming requirements. If your domain passes these initial checks, we’ll verify that it meets all of our requirements once you complete and submit the rest of the domain request form.
+
+{% endblock %}
From b42340d7e9a09c3faa2d1545675b63d4158cd30c Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Mon, 7 Nov 2022 18:57:17 -0500
Subject: [PATCH 09/50] remove old previous bottom from purpose
---
src/registrar/templates/application_purpose.html | 6 ------
1 file changed, 6 deletions(-)
diff --git a/src/registrar/templates/application_purpose.html b/src/registrar/templates/application_purpose.html
index 00b8793dd..0903880e7 100644
--- a/src/registrar/templates/application_purpose.html
+++ b/src/registrar/templates/application_purpose.html
@@ -20,13 +20,7 @@
{{ wizard.form.purpose_field|add_class:"usa-textarea usa-character-count__field"|attr:"aria-describedby:instructions"|attr:"maxlength=500" }}
You can enter up to 500 characters
-
-
- {% if wizard.steps.prev %}
-
- {% endif %}
-
{% endblock %}
From 1974ac6b07360abc549ebca5c53203ba6d6b82e6 Mon Sep 17 00:00:00 2001
From: igorkorenfeld
Date: Mon, 7 Nov 2022 19:00:54 -0500
Subject: [PATCH 10/50] Add your contact view, rename org contact
---
src/registrar/forms/application_wizard.py | 22 ++++++--
...tact.html => application_org_contact.html} | 0
.../templates/application_purpose.html | 3 ++
.../templates/application_your_contact.html | 53 +++++++++++++++++++
4 files changed, 74 insertions(+), 4 deletions(-)
rename src/registrar/templates/{application_contact.html => application_org_contact.html} (100%)
create mode 100644 src/registrar/templates/application_your_contact.html
diff --git a/src/registrar/forms/application_wizard.py b/src/registrar/forms/application_wizard.py
index 855a24106..5b7a2806d 100644
--- a/src/registrar/forms/application_wizard.py
+++ b/src/registrar/forms/application_wizard.py
@@ -89,38 +89,52 @@ class DotGovDomainForm(forms.Form):
class PurposeForm(forms.Form):
purpose_field = forms.CharField(label="Purpose", widget=forms.Textarea())
+class YourContactForm(forms.Form):
+ given_name = forms.CharField(label="First name/given name")
+ middle_name = forms.CharField(
+ required=False,
+ label="Middle name (optional)",
+ )
+ family_name = forms.CharField(label="Last name/family name")
+ title = forms.CharField(label="Title or role in your organization")
+ email = forms.EmailField(label="Email")
+ phone = forms.CharField(label="Phone")
+
# List of forms in our wizard. Each entry is a tuple of a name and a form
# subclass
FORMS = [
("organization", OrganizationForm),
- ("contact", ContactForm),
+ ("org_contact", ContactForm),
("authorizing_official", AuthorizingOfficialForm),
("current_sites", CurrentSitesForm),
("dotgov_domain", DotGovDomainForm),
("purpose", PurposeForm),
+ ("your_contact", YourContactForm),
]
# Dict to match up the right template with the right step. Keys here must
# match the first elements of the tuples in FORMS
TEMPLATES = {
"organization": "application_organization.html",
- "contact": "application_contact.html",
+ "org_contact": "application_org_contact.html",
"authorizing_official": "application_authorizing_official.html",
"current_sites": "application_current_sites.html",
"dotgov_domain": "application_dotgov_domain.html",
"purpose": "application_purpose.html",
+ "your_contact": "application_your_contact.html",
}
# We need to pass our page titles as context to the templates, indexed
# by the step names
TITLES = {
"organization": "About your organization",
- "contact": "Your organization's contact information",
+ "org_contact": "Your organization's contact information",
"authorizing_official": "Authorizing official",
- "current_sites": "Website for your organization",
+ "current_sites": "Organization website",
"dotgov_domain": ".gov domain",
"purpose": "Purpose of your domain",
+ "your_contact": "Your contact information",
}
diff --git a/src/registrar/templates/application_contact.html b/src/registrar/templates/application_org_contact.html
similarity index 100%
rename from src/registrar/templates/application_contact.html
rename to src/registrar/templates/application_org_contact.html
diff --git a/src/registrar/templates/application_purpose.html b/src/registrar/templates/application_purpose.html
index 0903880e7..6a7682b63 100644
--- a/src/registrar/templates/application_purpose.html
+++ b/src/registrar/templates/application_purpose.html
@@ -21,6 +21,9 @@
You can enter up to 500 characters
+
+ {{ block.super }}
+
{% endblock %}
diff --git a/src/registrar/templates/application_your_contact.html b/src/registrar/templates/application_your_contact.html
new file mode 100644
index 000000000..490f334b5
--- /dev/null
+++ b/src/registrar/templates/application_your_contact.html
@@ -0,0 +1,53 @@
+
+{% extends 'application_form.html' %}
+{% load widget_tweaks %}
+{% load static %}
+
+{% block backnav %}
+ {% with form_name="step__ao" %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
+
+{% block form_content %}
+
+
+
We’ll use the following information to contact you about your domain request and, once your request is approved, about managing your domain.
+
+
If you’d like us to use a different name, email, or phone number you can make those changes below. Changing your contact information here won’t affect your login.gov account information.
+
+
The contact information you provide here won’t be public and will only be used for the .gov registry.
+
+
+
All fields are required unless they are marked optional.
{% block form_content %}
{% if wizard.steps.next %}
- Next
- Save
+ Next
{% else %}
- Submit your domain request
- Save
+ Submit your domain request
{% endif %}
+ Save
{% endblock %}
What is the name and mailing address of your organization?
-
Enter the name of the organization your represent. Your organization might be part
-of a larger entity. If so, enter information about your part of the larger entity.
+
+
Enter the name of the organization your represent. Your organization might be part
+ of a larger entity. If so, enter information about your part of the larger entity.
-
All fields are required unless they are marked optional.
+
Once your domain is approved, the name of your organization will be publicly listed as the domain registrant.
+
+
All fields are required unless they are marked optional.