0.4.4 SHARED WORDPRESS MENU

Start with MENU-UPDATE-0.4.4.txt for this update.

PREVIOUS AGREEMENT CONFIGURATION (still supported)

0.4.3 AUTOMATIC AGREEMENT DETAILS

1. Upload the complete ZIP via Plugins > Add New > Upload Plugin and replace the current plugin. Do not delete or uninstall it.
2. Open Patriot Platform > Agreement and admissions. Organisation details now appear above Version label. Enter the actual operator name, correspondence address, contact email, and governing State or Territory.
3. Keep your edited agreement in the Agreement box, including your removal of Section 16. This update does not overwrite stored agreement text.
4. Supported organisation placeholders: [organisation_name], [organisation_address], [organisation_email], [governing_jurisdiction]. The older long operator placeholder, [service address], [email] and [insert governing State or Territory] are also recognised. [email] means organisation email, not member email.
5. Member placeholders: [member_full_name], [member_email], [member_region], [member_suburb], [member_postcode]. Existing [name] and [full name] also work. Account name/email fill automatically. Region/suburb/postcode are confirmed before reading if used in the agreement or privacy notice. This does not validate geographical boundaries.
6. Save unpublished text and questions, then publish after reviewing all text and questions. Missing settings are listed by name. Unknown square-bracket fields are reported explicitly.
7. Create or find the Fluent Forms signing form. Keep the page shortcode [patriot_agreement]; no replacement page code is required.
8. Organisation settings are frozen into each newly published version. Later setting changes require a new published version to affect future agreements. Signed records are unchanged. Changes to a member’s details invalidate their reading/quiz progress where those details affect the agreement.
9. The signing location must match the personalised agreement. Correct the application location and repeat the reading/quiz if a correction is needed.

The bundled Word document is the earlier reference template; your saved on-site agreement, including any removed sections, remains authoritative. Do not paste the reference template over your edited agreement.

0.4.3 ADMIN MENU FIX
Upload this full ZIP through Plugins > Add New > Upload Plugin and replace the installed version. Do not delete the plugin or reset its data. The parent admin menu now registers before its submenus. The legacy /wp-admin/ppm-admissions address redirects to admin.php?page=ppm-admissions. Existing agreements, signatures and settings are retained.

PATRIOT PLATFORM MEMBERS 0.4.3 — INSTALLATION AND OPERATION

This is the complete replacement plugin, not a code snippet. Install on your
local site first. Keep Fluent Forms and CertWright activated separately.
The supplied CertWright code was used for integration testing; a different
CertWright release must be checked before live use.

1. BACK UP AND INSTALL
Back up the WordPress database and wp-content. In Plugins > Add New > Upload
Plugin, upload patriot-platform-members-0.4.3.zip. Choose Replace current with
uploaded if WordPress finds the earlier Patriot Platform Members plugin.
Keep the plugin active. Do not paste PHP into a WordPress block or functions.php.
Do not delete Fluent Forms, CertWright or their data.
The plugin creates its new tables and Member hub page automatically on init.
Existing accounts, regions, certificate numbers, group cards and messages stay.
Existing members MUST sign and be accepted before the new member-only access,
new certificate issuance or coordinator powers become available. There is no
silent conversion of earlier consent into agreement signatures. Existing
certificates are retained as historical documents, not proof of current status.

2. COMPLETE THE AGREEMENT
Go to Patriot Platform > Agreement and admissions.
Your edited document is imported without the draft warning, review-only footer
or private review appendices. The supplied Word file is the reusable template;
[name] and [full name] are intentionally retained for automatic personalisation.
The organisation's legal name, service address, email and governing jurisdiction
are DIFFERENT placeholders. Complete those once in the admin agreement editor;
never replace the organisation's name with the member's name.
Publish a Privacy Policy page in Settings > Privacy and enter your privacy text.
Review the five understanding questions and their correct answers in this screen.
You may edit them or remove questions by clearing the question title; keep 1–5.
Confirm that the questions match the agreement, enter a version label, and publish.
The plugin saves each version's text and questions together. A new version changes
what future applicants see; it never edits earlier signed copies or silently
changes an existing member's terms. Material changes need fresh acceptance.
Existing 0.4.0 published versions lack a question set: republish your completed
text as a NEW version with the reviewed questions before reopening signing.
The upgrade removes the known draft notice from unpublished editor text only.
It does not overwrite your other edits or rewrite already published versions.

3. CREATE THE FLUENT FORMS SIGNING FORM
In Agreement and admissions, press Create or find Fluent Forms signing form.
Fluent Forms Free is sufficient for this implementation. Account creation uses
the plugin's verified WordPress-account flow; the Fluent Forms signing form
handles the authenticated application.
Use the automatically generated Membership agreement page ([patriot_agreement]),
normally /patriot-agreement/. The logged-in Join page uses the same flow.
Do NOT embed Fluent Forms alone: only the gated agreement page supplies the
signing nonce after the reading confirmation and all-correct understanding check.
Do NOT rename/delete its field names or set a separate CertWright automatic
certificate feed for this signing form. This plugin blocks the supplied
CertWright Fluent Forms callback for that form to prevent premature issuance.
It does not modify other Fluent Forms forms or CertWright feeds.
Do not add file-upload fields containing sensitive evidence to public uploads.

4. OPEN REGISTRATION
Patriot Platform > Accept new registrations controls account creation.
Signing also requires a published version, enabled signing and Privacy Policy.
Agreement and admissions > Pause public signing stops new signatures.
Exclude Membership agreement, Join, My membership, Member hub and Regional
coordination from ALL page,
CDN and server caches. The plugin also sends private/no-cache page headers.
Use HTTPS on the live site. Configure SMTP and a reliable WordPress cron job
on hosting; otherwise email/certificate queues may wait until the site is visited.
Never use real addresses for development test registrations.

5. MEMBER FLOW
Create account -> email link to set password -> sign in -> the three-step page:
  1. READ. The document includes the registered full name in every [name] or
     [full name] placeholder. The member can correct their full name before
     confirming reading. The document remains available at every step.
  2. ANSWER. All five questions must be correct before the signature form appears.
     Incorrect answers point to the relevant sections; members may reread and
     retry. There is no forced reading timer or scroll-to-bottom test. Twenty
     answer submissions per minute is the abuse limit, not a reading deadline.
  3. SIGN. The member's full name is prefilled and read-only. They choose their
     region and address, confirm the required declarations and explicitly submit
     with the intention to use that name as their electronic signature.
Then admissions review -> acceptance email -> CertWright PDF/email -> active hub.

Names are stored in ppm_full_name. New registrations supply this directly.
For older accounts, first/last name is preferred; display name is a fallback
that the member must check before confirming reading. Username is not used.
Editing the full name on this page does not change an earlier signed document.
The member must repeat the steps if their name, email, agreement version or
question set changes. The reading/question pass expires after 24 hours; sign
within that period or reread and repeat. The server checks this at submission,
so changing HTML or reusing a form URL does not bypass the gate.
A comprehension check records understanding; it cannot prove every word was read.
The signed snapshot stores the exact personalised text, template/personalised
hashes, version, reading confirmation, questions, selected correct answers, pass
score/time, consent choices, signature name and subsequent acceptance evidence.
Only the member and authorised administrators can download the signed copy.

Existing accounts must verify their current email or reset their password via
email before beginning. Fluent Forms Free is sufficient; no drawn-signature
add-on is required. An administrator still accepts each application before a
certificate can issue. Passing the questions is not organisational acceptance.
Region/suburb/postcode consistency is reviewed by admissions, not automatically
validated against a geographical dataset. The format check is four digits only.
Activity email/contact consent is OPTIONAL and separate from membership.

6. REVIEW APPLICATIONS
Agreement and admissions lists pending applications with the signed copy.
Check the selected region, suburb and postcode; enter your decision reason.
Accept or decline. Accepting an unsigned/unverified/restricted account is blocked.
The acceptance email must be submitted to WordPress successfully before a new
certificate request. If it fails, use Acceptance email retry with the account ID.
Use WordPress Users to find IDs (the Edit link contains user_id); use the
Patriot Platform screens to make membership decisions, not arbitrary user meta.
All time records are UTC. WordPress email acceptance does not prove delivery.

7. CERTIFICATES
Patriot Platform > Certificates opens CertWright. Certificate settings controls
the Patriot certificate design and optional CertWright definition.
Numbers use the established three-letter region prefix plus sequence,
e.g. ade-00001. Existing identifiers are not renumbered; retries reuse them.
Acceptance schedules certificate preparation; CertWright handles PDF delivery.
Unsigned, suspended, terminated, resigned or changed-email members cannot newly
receive a Patriot certificate through this integration. A delivery-time guard
also rechecks queued Patriot certificate email with the supplied CertWright.
If a queue item fails because status changed, review it in CertWright; do not
force bulk retries without checking why. A certificate already downloaded or
emailed cannot be recalled by this plugin. Treat eligibility API/member status
as the current-status source, not a saved PDF.

8. COORDINATORS AND REGIONAL MAP
Review coordinator applications in Patriot Platform. An active signed member
is required. Member administration can optionally require verified coordinator
training before approval/access. No courses are included in this release.
After approving a coordinator, use Regional groups to add the group name,
introduction and popup image, then activate it. The map/list show only activated
groups with a currently eligible approved coordinator. Suspension removes their
coordinator approval; restoration requires a fresh coordinator approval.
Membership counts do not automatically turn a group into a recognised assembly;
follow your agreement's separate recognition process and record the decision.

9. REGIONAL AND NATIONAL COMMUNICATIONS
Approved coordinators use Regional coordination to create contact groups for
their region, preview messages and explicitly queue them. Each member receives
one separate copy even when selected through multiple groups. Only active,
opted-in members are eligible. Membership, consent and sender authority are
checked again before each queued message is sent.
Administrators can select Australia-wide in the same screen for national
contact groups and campaigns. Coordinators cannot access this scope.
Members can withdraw consent in My membership or through the email opt-out link.
Opting out disables regional AND national activity communications; necessary
account/acceptance emails are separate. Queue statuses report WordPress handoff,
not inbox delivery. This package does not send any campaign on installation.

10. MEMBER HUB AND ACCOUNTABILITY
Member hub shows published national records plus the member's own region.
Coordinators submit proposals, minutes, financial summaries, decisions and
conflict/disclosure records. National administrators review and publish.
Financial records need approval by someone other than their author; a second
administrator account is needed when the author is an administrator.
These are document records, not a bank ledger or payment approval system.
Published records are corrected by a new record referencing the earlier one.
Private concerns/review requests are visible to their author and national
administrators. Suspended members retain access to their own requests and
signed agreements. Responses are displayed in their hub; check requests
regularly. This release does not email request/response notifications.
The admin accountability log records agreement versions, admissions, contact
preferences, restrictions, qualification decisions, publications and queued
campaigns. It is append-only through this UI, not tamper-proof against database
administrators. Back up the database and the ppm_agreement_key option together.

11. DISCIPLINE, REVIEW AND RETENTION
Member administration can record suspension, termination or restoration with
a reason and reference to the appropriate decision/process. The plugin does
not make disciplinary judgments, run hearings, impose penalties automatically,
calculate quorums, or conduct appeal votes. Follow the signed agreement's
notice, evidence, response, review and time-limit rules separately, and record
the resulting decision. A status change alone is not that required process.
Suspensions do not automatically expire; administrators must diarise reviews.
WordPress privacy exports include membership, signing, qualifications and
review-request records. Erasure flags signed/accountability records for a
case-by-case retention review rather than silently deleting or asserting a
blanket exemption. Fluent Forms keeps its own copy of submission data: include
its entries, CertWright, mail logs and backups in your retention procedure.
There is no automatic retention purge or case-management evidence upload.
Plugin deactivation/removal preserves data. Protect and back up the database.

12. TRAINING — FUTURE CONTENT
No coordinator or representative courses, lessons, tests or exams are created.
Administrators may record evidence of a verified pass and an optional expiry.
Coordinator training can be enabled as a requirement when the programme is ready.
Representative qualification requires a recorded current pass for the API flag.
The website cannot stop a person standing in an external election; your voting
app must enforce the applicable candidacy rules using its own authorised flow.

13. EXISTING VOTING APP
Set its HTTPS URL in Member administration to show an Open voting app link.
A link is not single sign-on. No invented API or automatic release is assumed.
Endpoint: GET /wp-json/patriot-platform/v1/eligibility/ACCOUNT_ID
Authenticate with WordPress Application Passwords over HTTPS using a dedicated
Patriot voting integration role account. That role can read eligibility, not
admissions, member emails, signatures, governance records or administration.
A logged-in member can read their own eligibility using a REST nonce; other
members cannot. Administrators can inspect eligibility for troubleshooting.
Response: opaque member_id UUID, active boolean, region only when active,
coordinator_qualified, representative_qualified, checked_at, ballot_eligibility.
The integer ACCOUNT_ID to UUID mapping must be established by the app's
onboarding/authentication integration; this package supplies no public directory.
The app must separately enforce ballot scope, membership snapshot date, one
vote per eligible member, secrecy, quorums, notice periods and result integrity.
No votes, private keys or voting credentials are stored here. To complete the
connection we still need your app's authentication/API specification and URL.

14. PAGE CODE AND BRANDING
The supplied complete Home page block file adds Agreement, Member hub and joining
steps, retaining the map, design and lion logo. Paste the entire file into the
Home page Code editor, replacing its previous contents, then save and view it.
The agreement page is created automatically with [patriot_agreement]. A complete
replacement block file is included if you ever need to restore its content.
The automatic member pages use the plugin's shared header and your Customizer
logo, maximum 150px wide. Select PatriotPlatform-Earth-Lion.png in Customizer.
Home's direct logo URL remains your supplied local upload URL; change it when
migrating to the live domain. In Appearance > Menus assign your desired menu to
Patriot Platform main menu (or Astra Primary). Add Agreement and Member hub to an existing
custom menu manually. The fallback menu includes it automatically.
Save Settings > Permalinks after installing if page links produce 404 errors.

15. LOCAL ACCEPTANCE CHECK BEFORE LIVE USE
Use test addresses/mail capture. Try the complete new-account and signing flow,
review the accepted copy, PDF and queue; exercise contact opt-out, coordinator
scope, suspended access and a private review request. Confirm the active map
card, header, mobile layout, SMTP, cron and backup restore on your exact setup.
This downloadable code is not installed automatically on patriot-platform.local.

16. QUESTIONS INCLUDED
The five defaults cover when membership starts, common law commitments, voting
rights, fair disciplinary procedure and proportionate consequences. Questions
and answer keys are reviewed in the admin screen and saved with each published
version. They are not editable by members and answer keys are not supplied in
page scripts. No coordinator or representative course is created.
Temporary question progress is included in privacy exports and cleared by
erasure requests; signed understanding evidence follows the signed-record
retention review. Include these records in the privacy notice.
