diff --git a/.gitignore b/.gitignore index 06a9128..fe19871 100644 --- a/.gitignore +++ b/.gitignore @@ -69,10 +69,9 @@ local_settings.py **/db.sqlite3 **/db.sqlite3-journal -# Static and media directories (uncomment if you collect to these paths) -# static/ -# staticfiles/ -# media/ +# Static and media directories +staticfiles/ +media/ # Scrapy .scrapy diff --git a/efile_app/efile/context_processors.py b/efile_app/efile/context_processors.py index f0953d6..55a7804 100644 --- a/efile_app/efile/context_processors.py +++ b/efile_app/efile/context_processors.py @@ -3,13 +3,22 @@ """ from .utils.config_loader import config_loader -from .utils.jurisdiction_stuff import get_jurisdiction_from_request def jurisdiction_context(request): """Add current jurisdiction and its config to all template contexts.""" - current_jurisdiction = get_jurisdiction_from_request(request) + # For templates, only use the jurisdiction if it is explicitly present in + # the URL path (e.g. /jurisdiction/illinois/...) or GET params. + # Do not bleed session jurisdiction into generic root routes like /about/ or /choose-jurisdiction. + current_jurisdiction = None + if request.GET.get("jurisdiction"): + current_jurisdiction = request.GET.get("jurisdiction").lower() + else: + segments = request.path.split("/") + if len(segments) >= 3 and segments[1] == "jurisdiction": + current_jurisdiction = segments[2].lower() + config = config_loader.load_jurisdiction_config(current_jurisdiction) return { diff --git a/efile_app/efile/services/drafts.py b/efile_app/efile/services/drafts.py index 710c5ef..750484d 100644 --- a/efile_app/efile/services/drafts.py +++ b/efile_app/efile/services/drafts.py @@ -115,41 +115,42 @@ def set_current_step(draft: FilingDraft, current_step: WorkflowStepKey | str) -> "name_change_reason": ("reason_for_name_change", "reason_for_change"), } -# FilingParty role -> {model field: wire key}. Petitioner party_type is special -# (three legacy aliases for one value) and handled separately. -_PARTY_SPECS: dict[str, dict[str, str]] = { +# FilingParty role -> {model field: wire keys}. Petitioner party_type is special +# (three legacy aliases for one value) and handled separately. Respondent and +# defendant are aliases because filing types use those terms interchangeably. +_PARTY_SPECS: dict[str, dict[str, tuple[str, ...]]] = { "petitioner": { - "first_name": "petitioner_first_name", - "last_name": "petitioner_last_name", - "address_line_1": "petitioner_address", - "email": "petitioner_email", - "phone": "petitioner_phone", + "first_name": ("petitioner_first_name",), + "last_name": ("petitioner_last_name",), + "address_line_1": ("petitioner_address",), + "email": ("petitioner_email",), + "phone": ("petitioner_phone",), }, "new_name": { - "first_name": "new_first_name", - "middle_name": "new_middle_name", - "last_name": "new_last_name", - "suffix": "new_suffix", - "party_type": "new_name_party_type", + "first_name": ("new_first_name",), + "middle_name": ("new_middle_name",), + "last_name": ("new_last_name",), + "suffix": ("new_suffix",), + "party_type": ("new_name_party_type",), }, "respondent": { - "first_name": "respondent_first_name", - "middle_name": "respondent_middle_name", - "last_name": "respondent_last_name", - "suffix": "respondent_suffix", - "party_type": "respondent_name_party_type", + "first_name": ("respondent_first_name", "defendant_first_name"), + "middle_name": ("respondent_middle_name", "defendant_middle_name"), + "last_name": ("respondent_last_name", "defendant_last_name"), + "suffix": ("respondent_suffix", "defendant_suffix"), + "party_type": ("respondent_name_party_type", "respondent_party_type", "defendant_party_type"), }, "other": { - "first_name": "other_first_name", - "last_name": "other_last_name", - "party_type": "other_party_type", - "address_line_1": "other_address_line_1", - "address_line_2": "other_address_line_2", - "city": "other_address_city", - "state": "other_address_state", - "zip_code": "other_address_zip", - "email": "other_email", - "phone": "other_phone_number", + "first_name": ("other_first_name",), + "last_name": ("other_last_name",), + "party_type": ("other_party_type",), + "address_line_1": ("other_address_line_1",), + "address_line_2": ("other_address_line_2",), + "city": ("other_address_city",), + "state": ("other_address_state",), + "zip_code": ("other_address_zip",), + "email": ("other_email",), + "phone": ("other_phone_number",), }, } @@ -233,7 +234,11 @@ def write_case_data( def _write_parties(draft: FilingDraft, data: dict[str, Any]) -> None: for role, spec in _PARTY_SPECS.items(): - values = {model_field: _as_str(data[wire_key]) for model_field, wire_key in spec.items() if wire_key in data} + values = {} + for model_field, wire_keys in spec.items(): + value = _first_present(data, wire_keys) + if value is not _MISSING: + values[model_field] = _as_str(value) if role == "petitioner": party_type = _first_present(data, _PETITIONER_PARTY_TYPE_KEYS) if party_type is not _MISSING: @@ -291,8 +296,9 @@ def read_case_data(draft: FilingDraft | None) -> dict[str, Any]: spec = _PARTY_SPECS.get(party.role) if spec is None: continue - for model_field, wire_key in spec.items(): - _put(data, wire_key, getattr(party, model_field)) + for model_field, wire_keys in spec.items(): + for wire_key in wire_keys: + _put(data, wire_key, getattr(party, model_field)) if party.role == "petitioner" and party.party_type: for key in _PETITIONER_PARTY_TYPE_KEYS: _put(data, key, party.party_type) diff --git a/efile_app/efile/static/config/README.md b/efile_app/efile/static/config/README.md index 9237157..b78f38c 100644 --- a/efile_app/efile/static/config/README.md +++ b/efile_app/efile/static/config/README.md @@ -48,6 +48,29 @@ that state, and that list grows: case types, document checklists, court overrides, and jurisdiction display settings such as the navigation title and logo all live in the one file. +### Public identity and court branding + +The `jurisdiction` section also controls the public About and Terms of Service +pages and the application header. Set these values for each jurisdiction: + +```yaml +jurisdiction: + brand_name: "LITEFile" + logo: "img/litefile-logo.svg" + logo_alt: "LITEFile logo" + official_court_name: "the Illinois Courts" + official_tool_statement: "LITEFile is an official, approved electronic filing tool of the Illinois Courts." + court_logos: + - name: "Illinois Courts" + src: "img/court-logo-illinois-placeholder.svg" + alt: "Placeholder logo for the Illinois Courts" +``` + +`logo` and each court logo `src` are paths under `efile/static`. The placeholder +court artwork can be replaced with approved jurisdiction artwork without +changing the templates. `contact_email` and `contact_address` supply the +privacy-request contact shown on the Terms of Service page. + ### Configuration file hierarchy 1. **Base Configuration** (`base-case-types.yaml`) @@ -859,4 +882,4 @@ keywords: ["name change", "name petition", "change of name"] - **Court customizations**: Working system demonstrated with Cook County name change variations ### To-Do's -- **Changing sections to array data structure**: Consider making changes to how we injest sections and instead of using keys can possibly use arrays for more flexible dyanmic sections. \ No newline at end of file +- **Changing sections to array data structure**: Consider making changes to how we injest sections and instead of using keys can possibly use arrays for more flexible dyanmic sections. diff --git a/efile_app/efile/static/config/base-case-types.yaml b/efile_app/efile/static/config/base-case-types.yaml index fad7505..6d2d33d 100644 --- a/efile_app/efile/static/config/base-case-types.yaml +++ b/efile_app/efile/static/config/base-case-types.yaml @@ -2,6 +2,32 @@ # This file defines the common structure that can be inherited by state-specific configs # Global defaults that apply to all states unless overridden +jurisdiction: + name: "LITEFile" + code: "" + display_name: "LITEFile" + brand_name: "LITEFile" + logo: "img/litefile-logo.svg" + logo_alt: "LITEFile logo" + icon: "fas fa-scale-balanced" + official_court_name: "the jurisdiction's court" + official_tool_statement: "LITEFile is an official, approved electronic filing tool of the jurisdiction's court." + court_logos: [] + partner_logos: [] + funder_logos: + - name: "Legal Services Corporation" + src: "img/logo-lsc.svg" + alt: "Legal Services Corporation logo" + url: "https://www.lsc.gov/" + - name: "State Justice Institute" + src: "img/logo-sji.png" + alt: "State Justice Institute logo" + url: "https://www.sji.gov/" + help_url: "" + help_number: "" + contact_email: "litlab@suffolk.edu" + contact_address: "Suffolk University Law School LIT Lab, 120 Tremont Street, Boston, MA" + defaults: sections: parties: @@ -15,7 +41,7 @@ defaults: fields: - section_title: "The other side" required: true - conditional_requirements: + conditional_requirements: {} # Default: show for all courts except those explicitly hidden fields: - name: "other_party_type" @@ -36,7 +62,7 @@ defaults: column_width: "col-6" - section_title: "Their physical address" required: true - conditional_requirements: + conditional_requirements: {} # Default: show for all courts except those explicitly hidden fields: - name: "other_address_line_1" @@ -66,7 +92,7 @@ defaults: column_width: "col-6" - section_title: "Their contact information" required: true - conditional_requirements: + conditional_requirements: {} # Default: show for all courts except those explicitly hidden fields: - name: "other_email" @@ -154,18 +180,18 @@ base_case_types: - section_title: "Defendant" required: true fields: - - name: "new_name_party_type" + - name: "defendant_party_type" label: "Party Type" type: "party_type_dropdown" required: true column_width: "col-12" api_endpoint: "/api/dropdowns/party-types/" - - name: "new_first_name" + - name: "defendant_first_name" label: "First Name" type: "text" required: true column_width: "col-6" - - name: "new_last_name" + - name: "defendant_last_name" label: "Last Name" type: "text" required: true diff --git a/efile_app/efile/static/config/states/illinois.yaml b/efile_app/efile/static/config/states/illinois.yaml index 7d16f0a..25a5635 100644 --- a/efile_app/efile/static/config/states/illinois.yaml +++ b/efile_app/efile/static/config/states/illinois.yaml @@ -6,9 +6,28 @@ jurisdiction: name: "Illinois eFile" code: "illinois" display_name: "Illinois" + brand_name: "LITEFile" + logo: "img/litefile-logo.svg" + logo_alt: "LITEFile logo" icon: "fas fa-balance-scale" svg: "img/IL.svg" api_endpoint: "/api/illinois" + official_court_name: "the Illinois Courts" + official_tool_statement: "LITEFile is an official, approved electronic filing tool of the Illinois Courts." + court_logos: + - name: "Illinois Courts" + src: "img/court-logo-illinois.svg" + alt: "Seal of the Supreme Court of Illinois" + partner_logos: + - name: "Illinois Legal Aid Online (ILAO)" + src: "img/logo-ilao.png" + alt: "Illinois Legal Aid Online logo" + url: "https://www.illinoislegalaid.org/" + role: "Project & Funding Partner" + help_url: "https://www.ilcourthelp.gov/" + help_number: "833-411-1121" + contact_email: "litlab@suffolk.edu" + contact_address: "Suffolk University Law School LIT Lab, 120 Tremont Street, Boston, MA" # State metadata, for the address state: @@ -205,7 +224,7 @@ case_types: fields: - section_title: "Children" required: false - conditional_requirements: + conditional_requirements: {} # show_when_field: "has_children" # show_when_value: true fields: @@ -510,4 +529,4 @@ court_specific_requirements: - field_group: "Name sought" modifications: conditional_requirements: - hidden_for_courts: ["bond"] \ No newline at end of file + hidden_for_courts: ["bond"] diff --git a/efile_app/efile/static/config/states/massachusetts.yaml b/efile_app/efile/static/config/states/massachusetts.yaml index 4881a10..fe5be99 100644 --- a/efile_app/efile/static/config/states/massachusetts.yaml +++ b/efile_app/efile/static/config/states/massachusetts.yaml @@ -7,18 +7,27 @@ jurisdiction: name: "Massachusetts eFile" code: "massachusetts" display_name: "Massachusetts" + brand_name: "LITEFile" + logo: "img/litefile-logo.svg" + logo_alt: "LITEFile logo" icon: "fas fa-balance-scale" svg: "img/MA.svg" api_endpoint: "/api/massachusetts" - help_url: "https://www.mass.gov/orgs/massachusetts-court-system" + official_court_name: "the Massachusetts Trial Court" + official_tool_statement: "LITEFile is an official, approved electronic filing tool of the Massachusetts Trial Court." + court_logos: + - name: "Massachusetts Trial Court" + src: "img/court-logo-massachusetts.png" + alt: "Seal of the Massachusetts Trial Court" + help_url: "https://www.mass.gov/orgs/court-service-centers" help_number: "711" + contact_email: "litlab@suffolk.edu" + contact_address: "Suffolk University Law School LIT Lab, 120 Tremont Street, Boston, MA" copyedit: landing_text: | - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed fringilla enim ut nibh aliquam venenatis. Vivamus lacinia risus vitae massa aliquet, id hendrerit mi tincidunt. Vestibulum aliquet sapien ut velit laoreet, in blandit lectus congue. Ut at massa in eros sodales porta id sit amet urna. Proin suscipit venenatis justo sit amet condimentum. Donec volutpat sem nec facilisis tristique. Sed elementum ante nisi, id lacinia eros pellentesque in. Curabitur quis ante ut nunc pharetra tincidunt. Maecenas ornare augue eu diam condimentum congue. Pellentesque ac lorem quis magna rutrum euismod pharetra ac massa. Nulla felis erat, consectetur eu lacus ac, scelerisque rhoncus diam. Sed gravida ex ut maximus dapibus. Sed eu hendrerit est. Maecenas in porta lacus. + Welcome to LITEFile for Massachusetts. Use this tool to prepare and submit electronic court filings to the Massachusetts Trial Court. post_action_text: | - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed fringilla enim ut nibh aliquam venenatis. Vivamus lacinia risus vitae massa aliquet, id hendrerit mi tincidunt. Vestibulum aliquet sapien ut velit laoreet, in blandit lectus congue. Ut at massa in eros sodales porta id sit amet urna. Proin suscipit venenatis justo sit amet condimentum. Donec volutpat sem nec facilisis tristique. Sed elementum ante nisi, id lacinia eros pellentesque in. Curabitur quis ante ut nunc pharetra tincidunt. Maecenas ornare augue eu diam condimentum congue. Pellentesque ac lorem quis magna rutrum euismod pharetra ac massa. Nulla felis erat, consectetur eu lacus ac, scelerisque rhoncus diam. Sed gravida ex ut maximus dapibus. Sed eu hendrerit est. Maecenas in porta lacus. - - Nulla at blandit risus, vel vehicula magna. Quisque ullamcorper lorem eget erat dignissim, id posuere ante lacinia. Quisque luctus vitae velit sed vulputate. Ut gravida ipsum in consectetur tincidunt. Quisque ac purus nunc. Sed sit amet accumsan dolor, in ullamcorper orci. Donec maximus imperdiet libero. Pellentesque vel feugiat magna, congue fermentum mi. Mauris vel molestie ex. Sed quis augue semper, tempus est vitae, porta felis. + Your filing has been submitted to the Massachusetts Trial Court for processing. Check your filing status for updates. If you have questions about a specific filing, contact the court. filing_statuses: | These are filings that you have already sent to the courts, either through this website or elsewhere. @@ -107,26 +116,14 @@ case_types: # Massachusetts court-specific requirements court_specific_requirements: - "suffolk:probate": # Suffolk County Probate Court + "suffolk:probate": case_types: name_change: - additional_fields: - - name: "publication_notice" - label: "Do you request waiver of publication notice?" - type: "radio" - required: true - column_width: "col-12" - options: - - value: "yes" - label: "Yes, I request waiver" - - value: "no" - label: "No, I will publish notice" - - additional_validation: - - field: "petitioner_age" - rule: "min_value" - value: 18 - message: "Petitioner must be at least 18 years old in Suffolk County" + field_modifications: + - field_group: "Requested name" + modifications: + conditional_requirements: + required_for_courts: ["suffolk:probate"] # Massachusetts-specific terminology overrides terminology: diff --git a/efile_app/efile/static/config/states/vermont.yaml b/efile_app/efile/static/config/states/vermont.yaml index 86cd1c0..9085c72 100644 --- a/efile_app/efile/static/config/states/vermont.yaml +++ b/efile_app/efile/static/config/states/vermont.yaml @@ -3,9 +3,28 @@ jurisdiction: name: "Vermont eFile" code: "vermont" display_name: "Vermont" + brand_name: "LITEFile" + logo: "img/litefile-logo.svg" + logo_alt: "LITEFile logo" icon: "fas fa-balance-scale" svg: "img/VT.svg" api_endpoint: "/api/vermont" + official_court_name: "the Vermont Judiciary" + official_tool_statement: "LITEFile is an official, approved electronic filing tool of the Vermont Judiciary." + court_logos: + - name: "Vermont Judiciary" + src: "img/court-logo-vermont.svg" + alt: "Seal of the State of Vermont" + partner_logos: + - name: "Legal Services Vermont (LSV)" + src: "img/logo-lsv.png" + alt: "Legal Services Vermont logo" + url: "https://legalservicesvt.org/" + role: "Project & Funding Partner" + help_url: "https://www.vtcourts.gov/self-help" + help_number: "" + contact_email: "litlab@suffolk.edu" + contact_address: "Suffolk University Law School LIT Lab, 120 Tremont Street, Boston, MA" # State metadata, for the address state: @@ -22,4 +41,4 @@ case_types: # Form structure only so far. Document checklists are state-specific -- what # Vermont requires, and what its courts call each form, is not what Illinois # requires -- so add `matches` and `documents` here to turn one on. See the - # "Document checklists" section of ../README.md. \ No newline at end of file + # "Document checklists" section of ../README.md. diff --git a/efile_app/efile/static/css/common.css b/efile_app/efile/static/css/common.css index 9f94544..c4aa725 100644 --- a/efile_app/efile/static/css/common.css +++ b/efile_app/efile/static/css/common.css @@ -1,3 +1,5 @@ +@import "components/footer.css"; + /* Single source of truth for color across every screen. Anything user-facing should reference a token from this block rather than its own hex value, so the app reads as one product instead of a set of @@ -53,6 +55,26 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } +.brand-link { + align-items: center; + color: white; + display: inline-flex; + gap: 0.75rem; + text-decoration: none; +} + +.brand-link:hover { + color: white; + opacity: 0.85; +} + +.brand-logo { + height: 42px; + object-fit: contain; + width: auto; + max-width: 140px; +} + /* Custom styles for better spacing and required field styling */ .required { color: var(--failure) !important; diff --git a/efile_app/efile/static/css/components/footer.css b/efile_app/efile/static/css/components/footer.css index b4dc6f0..881051f 100644 --- a/efile_app/efile/static/css/components/footer.css +++ b/efile_app/efile/static/css/components/footer.css @@ -1,9 +1,46 @@ footer { - /* position: absolute; - bottom: 0; */ width: 100%; - height: 2.5rem; - line-height: 2.5rem; - overflow: hidden; + min-height: 4.5rem; + padding: 1.5rem 0; background-color: #fff; + margin-top: auto; +} + +.footer-suffolk-logo { + display: inline-block; + height: 44px; + width: auto; + max-width: 200px; + object-fit: contain; + transition: opacity 0.2s ease; +} + +.footer-suffolk-logo:hover { + opacity: 0.85; +} + +.public-footer-links { + align-items: center; + display: flex; + flex-wrap: wrap; + gap: 0.75rem 1.25rem; + justify-content: center; + text-align: center; +} + +.public-footer-links a { + color: var(--better-blue); + text-decoration: none; +} + +.public-footer-links a:hover { + color: var(--brand-blue-hover); + text-decoration: underline; +} + +.public-footer-credit { + color: var(--text-muted); + font-size: 0.85rem; + margin: 0.65rem 0 0; + text-align: center; } \ No newline at end of file diff --git a/efile_app/efile/static/css/header.css b/efile_app/efile/static/css/header.css index b8970ce..ec21d8d 100644 --- a/efile_app/efile/static/css/header.css +++ b/efile_app/efile/static/css/header.css @@ -92,6 +92,7 @@ margin: 0; } + .header-menus { display: flex; align-items: center; diff --git a/efile_app/efile/static/css/public_pages.css b/efile_app/efile/static/css/public_pages.css new file mode 100644 index 0000000..32a9128 --- /dev/null +++ b/efile_app/efile/static/css/public_pages.css @@ -0,0 +1,159 @@ +.public-header { + margin-bottom: 0; +} + + +.public-header-link { + color: white; + font-weight: 600; + text-decoration: underline; + text-underline-offset: 0.2em; +} + +.public-page { + background: white; + margin-bottom: 2rem; + margin-top: 2rem; + max-width: 900px; + padding: clamp(1.5rem, 4vw, 3.5rem); +} + +.public-page h1 { + margin-bottom: 1.5rem; +} + +.public-page h2 { + border-bottom: 1px solid var(--border-subtle); + font-size: 1.55rem; + margin-top: 2.5rem; + padding-bottom: 0.5rem; +} + +.public-page p, +.public-page li { + color: var(--text-body); + line-height: 1.65; +} + +.public-page li+li { + margin-top: 0.6rem; +} + +.public-page-intro { + font-size: 1.1rem; +} + +.public-hero { + align-items: center; + display: flex; + gap: 1.5rem; + margin-bottom: 2rem; +} + +.public-hero h1 { + margin-bottom: 0.5rem; +} + +.public-page-logo { + background: var(--suffolk-blue); + border-radius: 0.5rem; + max-height: 84px; + max-width: 260px; + padding: 0.5rem 0.75rem; +} + +.suffolk-logo { + display: block; + height: 64px; + width: auto; + max-width: 260px; + object-fit: contain; + transition: opacity 0.2s ease; +} + +.suffolk-logo:hover { + opacity: 0.85; +} + +.official-tool-callout { + align-items: flex-start; + background: var(--surface-accent); + border-left: 5px solid var(--better-blue); + border-radius: 0.25rem; + color: var(--text-heading); + display: flex; + gap: 0.75rem; + line-height: 1.5; + margin: 1.25rem 0; + padding: 1rem 1.25rem; +} + +.official-tool-callout i { + color: var(--success-text); + margin-top: 0.2rem; +} + +.logo-grid { + display: flex; + flex-wrap: wrap; + gap: 1rem; +} + +.partner-logo-card { + align-items: center; + background: var(--surface-subtle); + border: 1px solid var(--border-default); + border-radius: 0.5rem; + color: var(--text-heading); + display: flex; + flex-direction: column; + justify-content: center; + margin: 0; + padding: 1rem; + text-align: center; + transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease; + width: min(100%, 260px); +} + +a.partner-logo-card:hover { + border-color: var(--suffolk-blue); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); + color: var(--suffolk-blue); + transform: translateY(-2px); +} + +.partner-logo-card img { + height: auto; + max-height: 80px; + max-width: 100%; + object-fit: contain; +} + +.partner-logo-card figcaption { + color: inherit; + font-size: 0.95rem; + margin-top: 0.75rem; +} + +.public-page .btn { + display: inline-block; + margin-top: 0.5rem; +} + +@media (max-width: 575px) { + .public-header .container>.d-flex { + align-items: flex-start !important; + flex-direction: column; + } + + .public-hero { + align-items: flex-start; + flex-direction: column; + } + + .public-page .btn { + display: block; + margin: 1rem 0 0; + width: fit-content; + } +} \ No newline at end of file diff --git a/efile_app/efile/static/img/court-logo-illinois.svg b/efile_app/efile/static/img/court-logo-illinois.svg new file mode 100644 index 0000000..163b8e8 --- /dev/null +++ b/efile_app/efile/static/img/court-logo-illinois.svg @@ -0,0 +1,1739 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/efile_app/efile/static/img/court-logo-massachusetts.png b/efile_app/efile/static/img/court-logo-massachusetts.png new file mode 100644 index 0000000..356b57a Binary files /dev/null and b/efile_app/efile/static/img/court-logo-massachusetts.png differ diff --git a/efile_app/efile/static/img/court-logo-vermont.svg b/efile_app/efile/static/img/court-logo-vermont.svg new file mode 100644 index 0000000..a5e0567 --- /dev/null +++ b/efile_app/efile/static/img/court-logo-vermont.svg @@ -0,0 +1,1621 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VERMONT + REEDOM + F + U + + NITY + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/efile_app/efile/static/img/lit-lab-logo-large.svg b/efile_app/efile/static/img/lit-lab-logo-large.svg new file mode 100644 index 0000000..7b517cf --- /dev/null +++ b/efile_app/efile/static/img/lit-lab-logo-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/efile_app/efile/static/img/lit-lab-logo-small.svg b/efile_app/efile/static/img/lit-lab-logo-small.svg new file mode 100644 index 0000000..96110c6 --- /dev/null +++ b/efile_app/efile/static/img/lit-lab-logo-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/efile_app/efile/static/img/lit-lab-logo-stacked.svg b/efile_app/efile/static/img/lit-lab-logo-stacked.svg new file mode 100644 index 0000000..2360068 --- /dev/null +++ b/efile_app/efile/static/img/lit-lab-logo-stacked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/efile_app/efile/static/img/lit-lab-torch.svg b/efile_app/efile/static/img/lit-lab-torch.svg new file mode 100644 index 0000000..64914d3 --- /dev/null +++ b/efile_app/efile/static/img/lit-lab-torch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/efile_app/efile/static/img/litefile-logo.svg b/efile_app/efile/static/img/litefile-logo.svg new file mode 100644 index 0000000..a7d13c1 --- /dev/null +++ b/efile_app/efile/static/img/litefile-logo.svg @@ -0,0 +1,8 @@ + + LITEFile + A document with a blue checkmark beside the word LITEFile + + + + LITEFile + diff --git a/efile_app/efile/static/img/logo-ilao.png b/efile_app/efile/static/img/logo-ilao.png new file mode 100644 index 0000000..a9c7309 Binary files /dev/null and b/efile_app/efile/static/img/logo-ilao.png differ diff --git a/efile_app/efile/static/img/logo-lsc.svg b/efile_app/efile/static/img/logo-lsc.svg new file mode 100644 index 0000000..9d8694c --- /dev/null +++ b/efile_app/efile/static/img/logo-lsc.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/efile_app/efile/static/img/logo-lsv.png b/efile_app/efile/static/img/logo-lsv.png new file mode 100644 index 0000000..259f1cf Binary files /dev/null and b/efile_app/efile/static/img/logo-lsv.png differ diff --git a/efile_app/efile/static/img/logo-sji.png b/efile_app/efile/static/img/logo-sji.png new file mode 100644 index 0000000..dc7b78a Binary files /dev/null and b/efile_app/efile/static/img/logo-sji.png differ diff --git a/efile_app/efile/static/img/suffolk-lit-lab-logo.png b/efile_app/efile/static/img/suffolk-lit-lab-logo.png new file mode 100644 index 0000000..ca56623 Binary files /dev/null and b/efile_app/efile/static/img/suffolk-lit-lab-logo.png differ diff --git a/efile_app/efile/static/img/suffolk-lit-lab-logo.svg b/efile_app/efile/static/img/suffolk-lit-lab-logo.svg new file mode 100644 index 0000000..7b517cf --- /dev/null +++ b/efile_app/efile/static/img/suffolk-lit-lab-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/efile_app/efile/static/js/filing-payload.js b/efile_app/efile/static/js/filing-payload.js index 32f2a31..1b4959a 100644 --- a/efile_app/efile/static/js/filing-payload.js +++ b/efile_app/efile/static/js/filing-payload.js @@ -132,14 +132,16 @@ const FilingPayload = { } // Add second user if needed for name changes - if (caseData.respondent_name_party_type) { + const respondentPartyType = caseData.respondent_name_party_type || + caseData.respondent_party_type || caseData.defendant_party_type; + if (respondentPartyType) { users.push({ - party_type: caseData.respondent_name_party_type, + party_type: respondentPartyType, name: { - first: caseData.respondent_first_name || "", - middle: caseData.respondent_middle_name || "", - last: caseData.respondent_last_name || "", - suffix: caseData.respondent_suffix || "" + first: caseData.respondent_first_name || caseData.defendant_first_name || "", + middle: caseData.respondent_middle_name || caseData.defendant_middle_name || "", + last: caseData.respondent_last_name || caseData.defendant_last_name || "", + suffix: caseData.respondent_suffix || caseData.defendant_suffix || "" }, is_new: true, }); diff --git a/efile_app/efile/templates/efile/about.html b/efile_app/efile/templates/efile/about.html new file mode 100644 index 0000000..0093a37 --- /dev/null +++ b/efile_app/efile/templates/efile/about.html @@ -0,0 +1,286 @@ +{% extends "efile/site_base.html" %} +{% load static %} +{% load i18n %} +{% block title %} + {% translate "About LITEFile" %} +{% endblock title %} +{% block public_content %} +
+ +
+

{% translate "About LITEFile" %}

+

{% translate "A secure, official way to file documents with the court online." %}

+
+
+
+

{% translate "What is LITEFile?" %}

+
+ + + +
+

+ {% translate "LITEFile is a product built by the" %} + {% translate "Suffolk University Law School Legal Innovation & Technology (LIT) Lab" %}. + {% translate "It helps people prepare and submit electronic court filings through a guided, step-by-step process." %} +

+

+ {% translate "The LIT Lab builds and maintains the technology. The court remains responsible for its rules, filing requirements, decisions, and the official court record." %} +

+
+
+ {% if jurisdiction %} +
+ + {{ config.jurisdiction.official_tool_statement }} +
+ {% endif %} +
+
+

{% translate "How does it work?" %}

+

+ {% translate "LITEFile asks questions about your filing, helps you organize your documents, and sends your completed filing through the jurisdiction's electronic filing system. You can use it on a computer or mobile device." %} +

+

+ {% translate "A submission confirmation means that LITEFile sent the filing for processing. It does not by itself mean that the court accepted the filing. Check your filing status and follow any instructions from the court." %} +

+
+
+

{% translate "Court partners" %}

+ {% if jurisdiction %} +

+ {% blocktranslate with court=config.jurisdiction.official_court_name %}This LITEFile experience is configured for {{ court }}.{% endblocktranslate %} +

+
+ {% for court_logo in config.jurisdiction.court_logos %} +
+ {{ court_logo.alt }} +
{{ court_logo.name }}
+
+ {% empty %} +
+
{% translate "Court partner" %}
+
+ {% endfor %} +
+ {% else %} +

+ {% translate "LITEFile works with courts that have approved us to integrate with their electronic filing systems. Each state integration is tailored to the specific court rules, forms, and filing standards of that jurisdiction:" %} +

+
+ + {% translate +
{% translate "Illinois Courts" %}
+
+ + {% translate +
{% translate "Massachusetts Trial Court" %}
+
+ + {% translate +
{% translate "Vermont Judiciary" %}
+
+
+ {% endif %} +
+ {% if not jurisdiction or jurisdiction == "illinois" or jurisdiction == "vermont" %} +
+

+ {% if jurisdiction %} + {% translate "Project partner" %} + {% else %} + {% translate "Project partners" %} + {% endif %} +

+ {% if jurisdiction == "illinois" %} +

+ {% translate "LITEFile's Illinois e-filing integration was developed in close partnership with Illinois Legal Aid Online (ILAO), who provided project leadership, co-development, and funding to expand accessible electronic court filing for self-represented litigants in Illinois." %} +

+
+ + {% translate +
{% translate "Illinois Legal Aid Online (ILAO)" %}
+
+
+ {% elif jurisdiction == "vermont" %} +

+ {% translate "LITEFile's Vermont e-filing integration was developed in partnership with Legal Services Vermont (LSV) and Vermont Legal Aid, who collaborated on funding, building, and deploying the tools through VTLawHelp to make court filing accessible throughout Vermont." %} +

+
+ + {% translate +
{% translate "Legal Services Vermont (LSV)" %}
+
+
+ {% else %} +

+ {% translate "LITEFile is developed in close collaboration with legal aid organizations that help fund, build, and deploy user-friendly electronic filing tools in their states:" %} +

+
+ + {% translate +
{% translate "Illinois Legal Aid Online (ILAO)" %}
+
+ + {% translate +
{% translate "Legal Services Vermont (LSV)" %}
+
+
+ {% endif %} +
+ {% endif %} +
+

{% translate "Project funders" %}

+

+ {% translate "The development of LITEFile and its court filing integrations has received generous grant support from national organizations dedicated to advancing equal access to justice:" %} +

+
+ + {% translate +
{% translate "Legal Services Corporation" %}
+
+ + {% translate +
{% translate "State Justice Institute" %}
+
+
+
+
+

{% translate "Your information is safe and private" %}

+

+ {% translate "LITEFile is designed to keep your filing information safe and private. Information you enter is used to prepare, submit, and track your filing, and is shared with the court and filing services needed to process it. We do not sell your personal information." %} +

+

+ {% translate "We use HTTPS encryption, access controls, firewalls, monitoring, and regular security updates to protect information. Access is limited to authorized people who need it to operate or improve the service." %} + {% translate "Read the Terms of Service and Privacy Policy." %} +

+
+
+

{% translate "Get involved" %}

+

+ {% translate "LITEFile is built with free and open-source technology. Visit the" %} + {% translate "public LITEFile GitHub repository" %} + {% translate "to learn about the project, report an issue, or contribute." %} +

+

+ {% translate "The Document Assembly Line community welcomes volunteers to test, build, translate, and improve legal technology." %} +

+

+ {% translate "Learn about volunteering" %} +

+
+
+ +

+ {% translate "LITEFile provides legal information and filing technology, not legal advice or representation. If you need legal advice, representation, or assistance with your situation, free and low-cost help may be available through local legal aid organizations and court resource centers:" %} +

+
+ {% if not jurisdiction or jurisdiction == "illinois" %} +
+
+

{% translate "Illinois" %}

+

+ {% translate "Explore free legal information, guided forms, and legal aid referrals through" %} + {% translate "Illinois Legal Aid Online (ILAO)" %}. +

+

+ {% translate "Connect with official court navigators and self-help resources at" %} + {% translate "Illinois Court Help" %} + {% translate "(or call 833-411-1121)." %} +

+
+
+ {% endif %} + {% if not jurisdiction or jurisdiction == "vermont" %} +
+
+

{% translate "Vermont" %}

+

+ {% translate "Access free civil legal information, self-help tools, and assistance from" %} + {% translate "VTLawHelp.org" %}, + {% translate "a joint project of Legal Services Vermont and Vermont Legal Aid." %} +

+

+ {% translate "Find court guidance and forms from the" %} + {% translate "Vermont Judiciary Self-Help Services" %}. +

+
+
+ {% endif %} + {% if not jurisdiction or jurisdiction == "massachusetts" %} +
+
+

{% translate "Massachusetts" %}

+

+ {% translate "Find legal aid programs and resources across Massachusetts using the" %} + {% translate "Massachusetts Legal Resource Finder" %}. +

+

+ {% translate "Get one-on-one help with court forms and procedure at" %} + {% translate "Massachusetts Court Service Centers" %}. +

+
+
+ {% endif %} +
+ {% if jurisdiction %} +

+ {% translate "Looking for resources in other states?" %} + {% translate "View resources for all supported jurisdictions on the main About page." %} +

+ {% endif %} +
+{% endblock public_content %} diff --git a/efile_app/efile/templates/efile/choose_jurisdiction.html b/efile_app/efile/templates/efile/choose_jurisdiction.html index 983edb2..a8c73b3 100644 --- a/efile_app/efile/templates/efile/choose_jurisdiction.html +++ b/efile_app/efile/templates/efile/choose_jurisdiction.html @@ -15,18 +15,22 @@ - +
-
+

{{ the_title }}

diff --git a/efile_app/efile/templates/efile/components/footer.html b/efile_app/efile/templates/efile/components/footer.html index 008f241..39cc85e 100644 --- a/efile_app/efile/templates/efile/components/footer.html +++ b/efile_app/efile/templates/efile/components/footer.html @@ -1,18 +1,31 @@ {% load static %} {% load i18n %} - - diff --git a/efile_app/efile/templates/efile/components/profile_header.html b/efile_app/efile/templates/efile/components/profile_header.html index 23e6a44..8fa1360 100644 --- a/efile_app/efile/templates/efile/components/profile_header.html +++ b/efile_app/efile/templates/efile/components/profile_header.html @@ -7,11 +7,24 @@
- {% if is_logged_in %} + {% if is_logged_in and jurisdiction %}