Shopfloor PC type system, webapp enhancements, slim Blancco GRUB
- Shopfloor PC type menu (CMM, WaxAndTrace, Keyence, Genspect, Display, Standard) - Baseline scripts: OpenText CSF, Start Menu shortcuts, network/WinRM, power/display - Standard type: eDNC + MarkZebra with 64-bit path mirroring - CMM type: Hexagon CLM Tools, PC-DMIS 2016/2019 R2 - Display sub-type: Lobby vs Dashboard - Webapp: enrollment management, image config editor, UI refresh - Upload-Image.ps1: robocopy MCL cache to PXE server - Download-Drivers.ps1: Dell driver download pipeline - Slim Blancco GRUB EFI (10MB -> 660KB) for old hardware compat - Shopfloor display imaging guide docs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,13 +43,12 @@
|
||||
<div>
|
||||
<h2 class="mb-1">{{ friendly_name }}</h2>
|
||||
<small class="text-muted">
|
||||
<i class="bi bi-file-earmark-code me-1"></i>
|
||||
<code>{{ image_type }}/Deploy/FlatUnattendW10.xml</code>
|
||||
</small>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-success" id="saveFormBtn">
|
||||
<i class="bi bi-floppy me-1"></i> Save
|
||||
Save
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -59,13 +58,13 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="form-tab" data-bs-toggle="tab"
|
||||
href="#formView" role="tab">
|
||||
<i class="bi bi-ui-checks-grid me-1"></i> Form Editor
|
||||
Form Editor
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="raw-tab" data-bs-toggle="tab"
|
||||
href="#rawView" role="tab">
|
||||
<i class="bi bi-code-slash me-1"></i> Raw XML
|
||||
Raw XML
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -80,9 +79,9 @@
|
||||
<!-- 1. Driver Paths -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-motherboard me-1"></i> Driver Paths</span>
|
||||
<span>Driver Paths</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" id="addDriverPath">
|
||||
<i class="bi bi-plus-lg"></i> Add
|
||||
Add
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
@@ -104,7 +103,7 @@
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-outline-danger btn-row-action remove-row">
|
||||
<i class="bi bi-trash"></i>
|
||||
Remove
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -122,7 +121,7 @@
|
||||
<!-- 2. Machine Settings -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header">
|
||||
<i class="bi bi-pc-display me-1"></i> Machine Settings
|
||||
Machine Settings
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
@@ -154,9 +153,9 @@
|
||||
<!-- 3. Specialize Commands (RunSynchronous) -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-terminal me-1"></i> Specialize Commands (RunSynchronous)</span>
|
||||
<span>Specialize Commands (RunSynchronous)</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" id="addSpecCmd">
|
||||
<i class="bi bi-plus-lg"></i> Add
|
||||
Add
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
@@ -173,7 +172,7 @@
|
||||
<tbody>
|
||||
{% for cmd in data.specialize_commands %}
|
||||
<tr draggable="true">
|
||||
<td class="drag-handle"><i class="bi bi-grip-vertical"></i></td>
|
||||
<td class="drag-handle">::</td>
|
||||
<td class="order-num">{{ loop.index }}</td>
|
||||
<td>
|
||||
<input type="text" class="form-control form-control-sm"
|
||||
@@ -185,13 +184,13 @@
|
||||
</td>
|
||||
<td class="text-nowrap">
|
||||
<button type="button" class="btn btn-outline-secondary btn-row-action move-up" title="Move up">
|
||||
<i class="bi bi-arrow-up"></i>
|
||||
Up
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline-secondary btn-row-action move-down" title="Move down">
|
||||
<i class="bi bi-arrow-down"></i>
|
||||
Down
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline-danger btn-row-action remove-row">
|
||||
<i class="bi bi-trash"></i>
|
||||
Remove
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -209,7 +208,7 @@
|
||||
<!-- 4. OOBE Settings -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header">
|
||||
<i class="bi bi-shield-check me-1"></i> OOBE Settings
|
||||
OOBE Settings
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
@@ -260,12 +259,160 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 5. First Logon Commands -->
|
||||
<!-- 5. User Accounts -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-play-circle me-1"></i> First Logon Commands</span>
|
||||
<span>User Accounts (Local)</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" id="addUserAccount">
|
||||
Add
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<table class="table table-sm mb-0" id="userAccountsTable">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th style="width:40px">#</th>
|
||||
<th>Name</th>
|
||||
<th>Password</th>
|
||||
<th>Group</th>
|
||||
<th>Display Name</th>
|
||||
<th style="width:60px"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for acct in data.user_accounts %}
|
||||
<tr>
|
||||
<td class="order-num">{{ loop.index }}</td>
|
||||
<td>
|
||||
<input type="text" class="form-control form-control-sm"
|
||||
name="account_name_{{ loop.index0 }}" value="{{ acct.name }}">
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" class="form-control form-control-sm"
|
||||
name="account_password_{{ loop.index0 }}" value="{{ acct.password }}">
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" class="form-control form-control-sm"
|
||||
name="account_group_{{ loop.index0 }}" value="{{ acct.group }}">
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" class="form-control form-control-sm"
|
||||
name="account_display_{{ loop.index0 }}" value="{{ acct.display_name }}">
|
||||
</td>
|
||||
<td>
|
||||
<input type="hidden" name="account_plaintext_{{ loop.index0 }}" value="{{ acct.plain_text }}">
|
||||
<button type="button" class="btn btn-outline-danger btn-row-action remove-account-row">
|
||||
Remove
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% if not data.user_accounts %}
|
||||
<div class="text-center text-muted py-3 empty-message" id="userAccountsEmpty">
|
||||
No local accounts configured. Click <strong>Add</strong> to add one.
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 6. AutoLogon -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header">
|
||||
AutoLogon
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-3">
|
||||
<div class="form-check form-switch mt-4">
|
||||
<input class="form-check-input" type="checkbox" id="autologonEnabledToggle"
|
||||
{% if data.autologon.enabled|lower == 'true' %}checked{% endif %}>
|
||||
<label class="form-check-label fw-semibold" for="autologonEnabledToggle">Enabled</label>
|
||||
<input type="hidden" name="autologon_enabled" id="autologon_enabled_val"
|
||||
value="{{ data.autologon.enabled }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label fw-semibold">Username</label>
|
||||
<input type="text" class="form-control" name="autologon_username"
|
||||
value="{{ data.autologon.username }}" placeholder="e.g. SupportUser">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label fw-semibold">Password</label>
|
||||
<input type="text" class="form-control" name="autologon_password"
|
||||
value="{{ data.autologon.password }}">
|
||||
<input type="hidden" name="autologon_plaintext" value="{{ data.autologon.plain_text }}">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label fw-semibold">Logon Count</label>
|
||||
<input type="text" class="form-control" name="autologon_logoncount"
|
||||
value="{{ data.autologon.logon_count }}" placeholder="e.g. 2 or 999">
|
||||
<div class="form-text">Number of auto-logon attempts.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 7. International Settings -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header" data-bs-toggle="collapse" data-bs-target="#intlCollapse"
|
||||
role="button" style="cursor:pointer">
|
||||
International Settings
|
||||
<small class="text-muted ms-2">(click to expand)</small>
|
||||
</div>
|
||||
<div class="collapse {% if data.intl.input_locale or data.intl.system_locale or data.intl.ui_language or data.intl.user_locale %}show{% endif %}"
|
||||
id="intlCollapse">
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-3">
|
||||
<label class="form-label fw-semibold">Input Locale</label>
|
||||
<input type="text" class="form-control" name="intl_input_locale"
|
||||
value="{{ data.intl.input_locale }}" placeholder="e.g. en-US">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label fw-semibold">System Locale</label>
|
||||
<input type="text" class="form-control" name="intl_system_locale"
|
||||
value="{{ data.intl.system_locale }}" placeholder="e.g. en-US">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label fw-semibold">UI Language</label>
|
||||
<input type="text" class="form-control" name="intl_ui_language"
|
||||
value="{{ data.intl.ui_language }}" placeholder="e.g. en-US">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label fw-semibold">User Locale</label>
|
||||
<input type="text" class="form-control" name="intl_user_locale"
|
||||
value="{{ data.intl.user_locale }}" placeholder="e.g. en-US">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 8. OOBE Time Zone -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header">
|
||||
OOBE Time Zone
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label fw-semibold">Time Zone (oobeSystem pass)</label>
|
||||
<input type="text" class="form-control" name="oobe_timezone"
|
||||
value="{{ data.oobe_timezone }}" placeholder="e.g. Eastern Standard Time">
|
||||
<div class="form-text">Separate from the specialize-pass time zone in Machine Settings above.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 9. First Logon Commands -->
|
||||
<div class="card section-card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span>First Logon Commands</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" id="addFlCmd">
|
||||
<i class="bi bi-plus-lg"></i> Add
|
||||
Add
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
@@ -282,7 +429,7 @@
|
||||
<tbody>
|
||||
{% for cmd in data.firstlogon_commands %}
|
||||
<tr draggable="true">
|
||||
<td class="drag-handle"><i class="bi bi-grip-vertical"></i></td>
|
||||
<td class="drag-handle">::</td>
|
||||
<td class="order-num">{{ loop.index }}</td>
|
||||
<td>
|
||||
<input type="text" class="form-control form-control-sm"
|
||||
@@ -294,13 +441,13 @@
|
||||
</td>
|
||||
<td class="text-nowrap">
|
||||
<button type="button" class="btn btn-outline-secondary btn-row-action move-up" title="Move up">
|
||||
<i class="bi bi-arrow-up"></i>
|
||||
Up
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline-secondary btn-row-action move-down" title="Move down">
|
||||
<i class="bi bi-arrow-down"></i>
|
||||
Down
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline-danger btn-row-action remove-row">
|
||||
<i class="bi bi-trash"></i>
|
||||
Remove
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -321,9 +468,9 @@
|
||||
<div class="tab-pane fade" id="rawView" role="tabpanel">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-code-slash me-1"></i> Raw XML</span>
|
||||
<span>Raw XML</span>
|
||||
<button type="button" class="btn btn-sm btn-success" id="saveRawBtn">
|
||||
<i class="bi bi-floppy me-1"></i> Save Raw XML
|
||||
Save Raw XML
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
Reference in New Issue
Block a user