196 lines
6.2 KiB
HTML
196 lines
6.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
<title>Script Automation Monkey</title>
|
|
<link rel="icon" href="{{SamyFaviconUrl}}">
|
|
|
|
<style>
|
|
{{CssContent}}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="logo-container">
|
|
<!-- SVS Logo (left) -->
|
|
<div class="logo-left">
|
|
<img src="{{SamyTopLogoUrl}}" alt="SVS Logo">
|
|
{{moduleVersion}}
|
|
</div>
|
|
|
|
<!-- Centered rotating tagline -->
|
|
<div id="tagline" class="tagline">
|
|
Script Automation Monkey (Yeah!)
|
|
</div>
|
|
|
|
<!-- Big red line under tagline -->
|
|
<div id="samyHint" class="samy-hint">{{SamyHintText}}</div>
|
|
|
|
</div>
|
|
|
|
<div class="container">
|
|
<div class="sidebar">
|
|
<button class="tab-button" data-tab="onboardTab">On-Boarding</button>
|
|
<button class="tab-button" data-tab="offboardTab">Off-Boarding</button>
|
|
<button class="tab-button" data-tab="devicesTab">Devices</button>
|
|
|
|
<div id="status-box" style="margin-top: 1em; font-family: monospace;"></div>
|
|
</div>
|
|
<div class="content">
|
|
<div id="onboardTab" class="tab-content">
|
|
<h2>On-Boarding</h2>
|
|
<h3 class="subtitle">This new deployment method ensures everything is successfully deployed with greater ease!</h3>
|
|
|
|
<div class="columns-container">
|
|
<div class="checkbox-group column">
|
|
<h3>SVSMSP Stack</h3>
|
|
<label><input type="checkbox" id="selectAllLeftCheckbox" onclick="toggleColumn('left')"> Select All</label>
|
|
{{onboardLeftColumn}}
|
|
</div>
|
|
|
|
<!-- Right side: split into Applications (top) + System Tweaks (bottom) -->
|
|
<div class="column right-stack" style="display:flex; flex-direction:column; gap:14px;">
|
|
|
|
|
|
<div class="checkbox-group">
|
|
<h3>Applications</h3>
|
|
<label>
|
|
<input type="checkbox" id="selectAllAppsCheckbox" onclick="toggleOnboardGroup('apps')">
|
|
Select All
|
|
</label>
|
|
{{onboardRightApps}}
|
|
</div>
|
|
|
|
<div class="checkbox-group">
|
|
<h3>System Tweaks</h3>
|
|
<label>
|
|
<input type="checkbox" id="selectAllTweaksCheckbox" onclick="toggleOnboardGroup('tweaks')">
|
|
Select All
|
|
</label>
|
|
{{onboardRightTweaks}}
|
|
|
|
|
|
</div> <!-- end System Tweaks checkbox-group -->
|
|
</div> <!-- end right column stack -->
|
|
</div> <!-- end columns-container -->
|
|
|
|
|
|
<div id="PasswordContainer" style="display:none; margin-bottom:1em;">
|
|
<label for="Password">Enter Password:</label>
|
|
<div style="display:flex; gap:5px;">
|
|
<input type="password" id="Password" placeholder="Enter Password" style="flex:1;" />
|
|
<button onclick="fetchSites()" class="go-button">GO!</button>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id="dattoRmmContainer" style="display:none; margin-bottom:1em;">
|
|
<label for="dattoDropdown">Select a Datto RMM site:</label>
|
|
<select id="dattoDropdown" style="width:100%;">
|
|
<option disabled selected>Fetching sites...</option>
|
|
</select>
|
|
</div>
|
|
|
|
</div> <!-- end onboardTab -->
|
|
|
|
<div id="offboardTab" class="tab-content">
|
|
<h2>Off-Boarding</h2>
|
|
<div class="columns-container">
|
|
<div class="checkbox-group column">
|
|
<h3>Remove Stack</h3>
|
|
<label>
|
|
<input type="checkbox" id="offboardSelectAll" onclick="toggleOffboardAll()">
|
|
Select All
|
|
</label>
|
|
{{offboardCheckboxes}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="tweaksTab" class="tab-content">
|
|
<h2>Tweaks</h2>
|
|
<div class="columns-container">
|
|
<div class="checkbox-group column">
|
|
<h3>Tweaks</h3>
|
|
{{tweaksCheckboxes}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="SVSAppsTab" class="tab-content">
|
|
<h2>SVS APPs</h2>
|
|
<div class="columns-container">
|
|
<div class="checkbox-group column">
|
|
<h3>Applications</h3>
|
|
{{appsCheckboxes}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- NEW: Devices tab for printers and future stuff -->
|
|
<div id="devicesTab" class="tab-content">
|
|
<h2>Devices</h2>
|
|
<h3 class="subtitle">Manage printers and other client devices.</h3>
|
|
|
|
<!-- Printer password + fetch -->
|
|
<div id="printerPasswordContainer" style="margin-bottom:1em;">
|
|
<label for="PrinterPassword">Enter Printer Password:</label>
|
|
<div style="display:flex; gap:5px;">
|
|
<input type="password"
|
|
id="PrinterPassword"
|
|
placeholder="Enter printer password"
|
|
style="flex:1;" />
|
|
<button onclick="fetchPrinters()" class="go-button">Get Printers</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Client code dropdown -->
|
|
<div id="printerClientContainer" style="display:none; margin-bottom:1em;">
|
|
<label for="printerClientDropdown">Select Client:</label>
|
|
<select id="printerClientDropdown" style="width:100%;">
|
|
<option disabled selected>Fetch printers first...</option>
|
|
</select>
|
|
</div>
|
|
|
|
<!-- Printer checkbox list -->
|
|
<div id="printerListContainer" style="display:none; margin-bottom:1em;">
|
|
<label>Printers for selected client:</label>
|
|
<small style="display:block; margin-bottom:4px; opacity:0.8;">
|
|
Check the printers to install, and mark one as "Make default" (optional).
|
|
</small>
|
|
|
|
<div id="printerCheckboxContainer"
|
|
style="max-height:200px; overflow-y:auto; border:1px solid #444; padding:6px; border-radius:4px;">
|
|
<!-- Populated by JS -->
|
|
</div>
|
|
|
|
<button id="installPrintersButton"
|
|
class="btn btn-success"
|
|
style="margin-top:8px;"
|
|
onclick="installSelectedPrinters()">
|
|
Install Selected Printers
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Tiny inline bridge: pass dynamic data, then inline JS from Gitea -->
|
|
<script>
|
|
window.SAMY_TASKS = {{tasksJsAll}};
|
|
window.SAMY_DEFAULT_PAGE = "{{defaultPage}}";
|
|
</script>
|
|
|
|
|
|
<script>
|
|
{{JsContent}}
|
|
</script>
|
|
|
|
<!-- Floating button group -->
|
|
<div class="fixed-buttons">
|
|
<button class="exit-button" onclick="endSession()">Exit</button>
|
|
<button class="run-button" onclick="triggerInstall()">Run Selected</button>
|
|
</div>
|
|
|
|
</body>
|
|
</html> |