############################################################################## # mkblackbelt.ui.yaml — Web UI Form Definition for the mkblackbelt Command # # This file defines the web form rendered by the P4Sudo web interface when # a user invokes the 'mkblackbelt' command. It is separate from p4sudo.cfg # (which handles command registration and authorization) to accommodate the # rich field types and groupings needed for this form. # # Field types: # word — Single token: alphanumeric, no spaces (used for identifiers) # line — Single line of free text # url — URL, validated as well-formed # email — Email address, validated as well-formed # date — Date in YYYY/MM/DD format # integer — Non-negative integer # select — Dropdown; valid values listed under 'options' # # Each field may be marked required: true or required: false. # Empty optional fields are substituted as empty strings in the template; # their corresponding table rows are kept in the generated INFO.md. ############################################################################## command: mkblackbelt title: "Bootstrap Black Belt Customer on PPN" description: > Onboard a new customer to the Perforce Black Belt consulting program. Creates the customer depot, main stream, and INFO.md on PPN, and adds a row to the Black Belt Customer Index. sections: - id: customer_identity title: "Customer Identity" fields: - name: CustomerTag label: "Customer Tag" type: word required: true description: > Short identifier for the customer's P4 depot (e.g. AcmeCorp). Alphanumeric only, any case, no spaces, no special characters, must not start with a digit. Becomes the P4 depot name on PPN. token: __EDITME_CUSTOMER_TAG__ - name: SalesforceLink label: "Salesforce Link" type: url required: true description: "Full Salesforce opportunity or account URL." token: __EDITME_SALESFORCE_LINK__ - name: Tier label: "Program Tier" type: select required: true options: - Standard - Enterprise - Essential token: null # used in CustomerIndex only, not in INFO.md template - name: CommsChannel label: "Comms Channel" type: line required: true description: "Communication channel for the engagement (e.g. Slack #ext-acme-perforce-bb)." token: null # used in CustomerIndex only, not in INFO.md template - name: IndexNotes label: "Notes" type: line required: false description: "Optional free-text notes for the Customer Index entry." token: null # used in CustomerIndex only, not in INFO.md template - id: program_dates title: "Program Dates & Licensed Seats" fields: - name: ProgramStartDate label: "Program Start Date" type: date required: true description: "YYYY/MM/DD — also used as the Start date in the Customer Index." token: __EDITME_PROGRAM_START_DATE__ - name: ProgramEndDate label: "Program End Date" type: date required: true description: "YYYY/MM/DD — also used as the End date in the Customer Index." token: __EDITME_PROGRAM_END_DATE__ - name: LicensedUsers label: "Licensed Users" type: integer required: true token: __EDITME_LICENSED_USERS__ - name: BackgroundUsers label: "Background Users" type: integer required: true token: __EDITME_BACKGROUND_USERS__ - id: customer_contacts title: "Customer Contacts" fields: - name: Contact1Name label: "Contact 1 — Name" type: line required: true token: __EDITME_CONTACT_1_NAME__ - name: Contact1Email label: "Contact 1 — Email" type: email required: true token: __EDITME_CONTACT_1_EMAIL__ - name: Contact1Role label: "Contact 1 — Role / Notes" type: line required: true token: __EDITME_CONTACT_1_ROLE_AND_NOTES__ - name: Contact2Name label: "Contact 2 — Name" type: line required: false token: __EDITME_CONTACT_2_NAME__ - name: Contact2Email label: "Contact 2 — Email" type: email required: false token: __EDITME_CONTACT_2_EMAIL__ - name: Contact2Role label: "Contact 2 — Role / Notes" type: line required: false token: __EDITME_CONTACT_2_ROLE_AND_NOTES__ - id: p4_staff_contacts title: "P4 Staff Contacts" fields: - name: P4PrimaryName label: "Primary — Name" type: line required: true token: __EDITME_P4_PRIMARY_NAME__ - name: P4PrimaryEmail label: "Primary — Email" type: email required: true token: __EDITME_P4_PRIMARY_EMAIL__ - name: P4PrimaryRole label: "Primary — Role / Notes" type: line required: true token: __EDITME_P4_PRIMARY_ROLE_AND_NOTES__ - name: P4SecondaryName label: "Secondary — Name" type: line required: false token: __EDITME_P4_SECONDARY_NAME__ - name: P4SecondaryEmail label: "Secondary — Email" type: email required: false token: __EDITME_P4_SECONDARY_EMAIL__ - name: P4SecondaryRole label: "Secondary — Role / Notes" type: line required: false token: __EDITME_P4_SECONDARY_ROLE_AND_NOTES__ - name: P4Extra1Name label: "Extra Contact 1 — Name" type: line required: false token: __EDITME_P4_EXTRA_1_NAME__ - name: P4Extra1Email label: "Extra Contact 1 — Email" type: email required: false token: __EDITME_P4_EXTRA_1_EMAIL__ - name: P4Extra1Role label: "Extra Contact 1 — Role / Notes" type: line required: false token: __EDITME_P4_EXTRA_1_ROLE_AND_NOTES__ - name: P4Extra2Name label: "Extra Contact 2 — Name" type: line required: false token: __EDITME_P4_EXTRA_2_NAME__ - name: P4Extra2Email label: "Extra Contact 2 — Email" type: email required: false token: __EDITME_P4_EXTRA_2_EMAIL__ - name: P4Extra2Role label: "Extra Contact 2 — Role / Notes" type: line required: false token: __EDITME_P4_EXTRA_2_ROLE_AND_NOTES__ # Auto-populated fields — set by the script at runtime, not entered by user. auto_fields: - name: ActivationDate description: "Today's date in YYYY/MM/DD format." token: __EDITME_YYYY_MM_DD__