mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-17 18:09:25 +02:00
Logic wrapup
This commit is contained in:
parent
e57757a99f
commit
27afda9673
4 changed files with 45 additions and 34 deletions
|
@ -167,6 +167,9 @@ class DomainRequestAdminForm(forms.ModelForm):
|
||||||
"alternative_domains": NoAutocompleteFilteredSelectMultiple("alternative_domains", False),
|
"alternative_domains": NoAutocompleteFilteredSelectMultiple("alternative_domains", False),
|
||||||
"other_contacts": NoAutocompleteFilteredSelectMultiple("other_contacts", False),
|
"other_contacts": NoAutocompleteFilteredSelectMultiple("other_contacts", False),
|
||||||
}
|
}
|
||||||
|
labels = {
|
||||||
|
"action_needed_reason_email": "Auto-generated email",
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
@ -1520,6 +1523,7 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin):
|
||||||
"status",
|
"status",
|
||||||
"rejection_reason",
|
"rejection_reason",
|
||||||
"action_needed_reason",
|
"action_needed_reason",
|
||||||
|
"action_needed_reason_email",
|
||||||
"investigator",
|
"investigator",
|
||||||
"creator",
|
"creator",
|
||||||
"submitter",
|
"submitter",
|
||||||
|
@ -1599,7 +1603,8 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin):
|
||||||
"alternative_domains",
|
"alternative_domains",
|
||||||
"is_election_board",
|
"is_election_board",
|
||||||
"federal_agency",
|
"federal_agency",
|
||||||
"status_history"
|
"status_history",
|
||||||
|
"action_needed_reason_email",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Read only that we'll leverage for CISA Analysts
|
# Read only that we'll leverage for CISA Analysts
|
||||||
|
|
|
@ -362,8 +362,9 @@ function initializeWidgetOnList(list, parentId) {
|
||||||
(function (){
|
(function (){
|
||||||
let rejectionReasonFormGroup = document.querySelector('.field-rejection_reason')
|
let rejectionReasonFormGroup = document.querySelector('.field-rejection_reason')
|
||||||
let actionNeededReasonFormGroup = document.querySelector('.field-action_needed_reason');
|
let actionNeededReasonFormGroup = document.querySelector('.field-action_needed_reason');
|
||||||
|
let actionNeededReasonEmailFormGroup = document.querySelector('.field-action_needed_reason_email')
|
||||||
|
|
||||||
if (rejectionReasonFormGroup && actionNeededReasonFormGroup) {
|
if (rejectionReasonFormGroup && actionNeededReasonFormGroup && actionNeededReasonEmailFormGroup) {
|
||||||
let statusSelect = document.getElementById('id_status')
|
let statusSelect = document.getElementById('id_status')
|
||||||
let isRejected = statusSelect.value == "rejected"
|
let isRejected = statusSelect.value == "rejected"
|
||||||
let isActionNeeded = statusSelect.value == "action needed"
|
let isActionNeeded = statusSelect.value == "action needed"
|
||||||
|
@ -371,6 +372,7 @@ function initializeWidgetOnList(list, parentId) {
|
||||||
// Initial handling of rejectionReasonFormGroup display
|
// Initial handling of rejectionReasonFormGroup display
|
||||||
showOrHideObject(rejectionReasonFormGroup, show=isRejected)
|
showOrHideObject(rejectionReasonFormGroup, show=isRejected)
|
||||||
showOrHideObject(actionNeededReasonFormGroup, show=isActionNeeded)
|
showOrHideObject(actionNeededReasonFormGroup, show=isActionNeeded)
|
||||||
|
showOrHideObject(actionNeededReasonEmailFormGroup, show=isActionNeeded)
|
||||||
|
|
||||||
// Listen to change events and handle rejectionReasonFormGroup display, then save status to session storage
|
// Listen to change events and handle rejectionReasonFormGroup display, then save status to session storage
|
||||||
statusSelect.addEventListener('change', function() {
|
statusSelect.addEventListener('change', function() {
|
||||||
|
@ -382,6 +384,7 @@ function initializeWidgetOnList(list, parentId) {
|
||||||
|
|
||||||
isActionNeeded = statusSelect.value == "action needed"
|
isActionNeeded = statusSelect.value == "action needed"
|
||||||
showOrHideObject(actionNeededReasonFormGroup, show=isActionNeeded)
|
showOrHideObject(actionNeededReasonFormGroup, show=isActionNeeded)
|
||||||
|
showOrHideObject(actionNeededReasonEmailFormGroup, show=isActionNeeded)
|
||||||
addOrRemoveSessionBoolean("showActionNeededReason", add=isActionNeeded)
|
addOrRemoveSessionBoolean("showActionNeededReason", add=isActionNeeded)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -398,6 +401,7 @@ function initializeWidgetOnList(list, parentId) {
|
||||||
|
|
||||||
let showActionNeededReason = sessionStorage.getItem("showActionNeededReason") !== null
|
let showActionNeededReason = sessionStorage.getItem("showActionNeededReason") !== null
|
||||||
showOrHideObject(actionNeededReasonFormGroup, show=showActionNeededReason)
|
showOrHideObject(actionNeededReasonFormGroup, show=showActionNeededReason)
|
||||||
|
showOrHideObject(actionNeededReasonEmailFormGroup, show=isActionNeeded)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -837,3 +837,7 @@ div.dja__model-description{
|
||||||
.margin-top-0 {
|
.margin-top-0 {
|
||||||
margin-top: 0 !important;
|
margin-top: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.padding-top-0 {
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
|
@ -61,6 +61,24 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html)
|
||||||
No changelog to display.
|
No changelog to display.
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% elif field.field.name == "action_needed_reason_email" %}
|
||||||
|
<div class="readonly textarea-wrapper">
|
||||||
|
<div id="action_needed_reason_email_readonly" class="dja-readonly-textarea-container padding-1 margin-top-0 padding-top-0 margin-bottom-1 thin-border collapse--dgsimple collapsed">
|
||||||
|
<label class="max-full" for="action_needed_reason_email_view_more">
|
||||||
|
<strong>Sent to submitter</strong>
|
||||||
|
</label>
|
||||||
|
<textarea id="action_needed_reason_email_view_more" cols="40" rows="20" class="{% if not original_object.action_needed_reason %}display-none{% endif %}" readonly>
|
||||||
|
{{ original_object.action_needed_reason_email }}
|
||||||
|
</textarea>
|
||||||
|
<p id="no-email-message" class="{% if original_object.action_needed_reason %}display-none{% endif %}">No email will be sent.</p>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="collapse-toggle--dgsimple usa-button usa-button--unstyled margin-top-2 margin-bottom-1 margin-left-1">
|
||||||
|
<span>Show details</span>
|
||||||
|
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
|
<use xlink:href="/public/img/sprite.svg#expand_more"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
{% elif field.field.name == "other_contacts" %}
|
{% elif field.field.name == "other_contacts" %}
|
||||||
{% if all_contacts.count > 2 %}
|
{% if all_contacts.count > 2 %}
|
||||||
<div class="readonly">
|
<div class="readonly">
|
||||||
|
@ -121,10 +139,7 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html)
|
||||||
{% endblock field_readonly %}
|
{% endblock field_readonly %}
|
||||||
|
|
||||||
{% block after_help_text %}
|
{% block after_help_text %}
|
||||||
{% if field.field.name == "action_needed_reason" %}
|
{% if field.field.name == "action_needed_reason_email" %}
|
||||||
<div class="flex-container">
|
|
||||||
<label aria-label="Action needed reason email"></label>
|
|
||||||
<div class="textarea-wrapper">
|
|
||||||
{% comment %}
|
{% comment %}
|
||||||
Store the action needed reason emails in a json-based dictionary.
|
Store the action needed reason emails in a json-based dictionary.
|
||||||
This allows us to change the action_needed_reason_email field dynamically, depending on value.
|
This allows us to change the action_needed_reason_email field dynamically, depending on value.
|
||||||
|
@ -137,23 +152,6 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html)
|
||||||
{{ action_needed_reason_emails|safe }}
|
{{ action_needed_reason_emails|safe }}
|
||||||
</script>
|
</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div id="action_needed_reason_email_readonly" class="dja-readonly-textarea-container padding-1 margin-top-2 margin-bottom-1 thin-border collapse--dgsimple collapsed">
|
|
||||||
<label class="max-full" for="action_needed_reason_email_view_more">
|
|
||||||
<strong>Auto-generated email (sent to submitter)</strong>
|
|
||||||
</label>
|
|
||||||
<textarea id="action_needed_reason_email_view_more" cols="40" rows="20" class="{% if not original_object.action_needed_reason %}display-none{% endif %}" readonly>
|
|
||||||
{{ original_object.action_needed_reason_email }}
|
|
||||||
</textarea>
|
|
||||||
<p id="no-email-message" class="{% if original_object.action_needed_reason %}display-none{% endif %}">No email will be sent.</p>
|
|
||||||
</div>
|
|
||||||
<button type="button" class="collapse-toggle--dgsimple usa-button usa-button--unstyled margin-top-2 margin-bottom-1 margin-left-1">
|
|
||||||
<span>Show details</span>
|
|
||||||
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
|
||||||
<use xlink:href="/public/img/sprite.svg#expand_more"></use>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% elif field.field.name == "creator" %}
|
{% elif field.field.name == "creator" %}
|
||||||
<div class="flex-container tablet:margin-top-2">
|
<div class="flex-container tablet:margin-top-2">
|
||||||
<label aria-label="Creator contact details"></label>
|
<label aria-label="Creator contact details"></label>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue