mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-06-14 03:25:02 +00:00
correcting files
This commit is contained in:
parent
7ef56889ce
commit
01f7d5525c
@ -7,7 +7,7 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="page-container">
|
<div id="page-container">
|
||||||
<th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block>
|
<th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block>
|
||||||
<div style="transform-origin: top;"
|
<div style="transform-origin: top;"
|
||||||
id="scale-wrap">
|
id="scale-wrap">
|
||||||
@ -60,7 +60,7 @@
|
|||||||
style="height:2.5rem; display: flex; align-items: center; cursor: pointer; justify-content: center;">
|
style="height:2.5rem; display: flex; align-items: center; cursor: pointer; justify-content: center;">
|
||||||
<label for="sort-options" th:text="#{home.sortBy}">Sort by:</label>
|
<label for="sort-options" th:text="#{home.sortBy}">Sort by:</label>
|
||||||
<select id="sort-options" style="border:none;">
|
<select id="sort-options" style="border:none;">
|
||||||
<option value="alphabetical" th:text="#{home.alphabetical}"></option>
|
<option value="alphabetical" th:text="#{home.alphabetical}"> </option>
|
||||||
<!-- <option value="personal">Your most used</option> -->
|
<!-- <option value="personal">Your most used</option> -->
|
||||||
<option value="global" th:text="#{home.globalPopularity}"></option>
|
<option value="global" th:text="#{home.globalPopularity}"></option>
|
||||||
<!-- <option value="server">Popularity in organisation</option> -->
|
<!-- <option value="server">Popularity in organisation</option> -->
|
||||||
@ -118,11 +118,11 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- Survey Modal -->
|
<!-- Survey Modal -->
|
||||||
<div class="modal fade" id="surveyModal" tabindex="-1" role="dialog" aria-labelledby="surveyModalLabel"
|
<div class="modal fade" id="surveyModal" tabindex="-1" role="dialog" aria-labelledby="surveyModalLabel"
|
||||||
aria-hidden="true">
|
aria-hidden="true">
|
||||||
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
|
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
@ -131,20 +131,14 @@
|
|||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<p th:text="#{survey.meeting.1}">If you're using Stirling PDF at work, we'd love to speak to you. We're offering free
|
<p th:text="#{survey.meeting.1}">If you're using Stirling PDF at work, we'd love to speak to you. We're offering free technical support in exchange for a 15 minute user discovery session.</p>
|
||||||
technical support in exchange for a 15 minute user discovery session.</p>
|
|
||||||
<p th:text="#{survey.meeting.2}">This is a chance to:</p>
|
<p th:text="#{survey.meeting.2}">This is a chance to:</p>
|
||||||
<p><span>🛠️</span><span th:text="#{survey.meeting.3}">Get help with deployment, integrations, or troubleshooting</span>
|
<p><span>🛠️</span><span th:text="#{survey.meeting.3}">Get help with deployment, integrations, or troubleshooting</span></p>
|
||||||
</p>
|
<p><span>📢</span><span th:text="#{survey.meeting.4}">Provide direct feedback on performance, edge cases, and feature gaps</span></p>
|
||||||
<p><span>📢</span><span th:text="#{survey.meeting.4}">Provide direct feedback on performance, edge cases, and feature gaps</span>
|
<p><span>🔍</span><span th:text="#{survey.meeting.5}">Help us refine Stirling PDF for real-world enterprise use</span></p>
|
||||||
</p>
|
|
||||||
<p><span>🔍</span><span th:text="#{survey.meeting.5}">Help us refine Stirling PDF for real-world enterprise use</span>
|
|
||||||
</p>
|
|
||||||
<p th:text="#{survey.meeting.6}">If you're interested, you can book time with our team directly.</p>
|
<p th:text="#{survey.meeting.6}">If you're interested, you can book time with our team directly.</p>
|
||||||
<p th:text="#{survey.meeting.7}">Looking forward to digging into your use cases and making Stirling PDF even
|
<p th:text="#{survey.meeting.7}">Looking forward to digging into your use cases and making Stirling PDF even better!</p>
|
||||||
better!</p>
|
<a href="https://calendly.com/d/crsr-tz6-487" target="_blank" class="btn btn-primary" id="takeSurvey2" th:text="#{survey.meeting.button}">Book meeting</a>
|
||||||
<a href="https://calendly.com/d/crsr-tz6-487" target="_blank" class="btn btn-primary" id="takeSurvey2"
|
|
||||||
th:text="#{survey.meeting.button}">Book meeting</a>
|
|
||||||
</br>
|
</br>
|
||||||
</br>
|
</br>
|
||||||
<p th:text="#{survey.meeting.notInterested}">Not a business and/or interested in a meeting?</p>
|
<p th:text="#{survey.meeting.notInterested}">Not a business and/or interested in a meeting?</p>
|
||||||
@ -164,11 +158,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- Analytics Modal -->
|
<!-- Analytics Modal -->
|
||||||
<div class="modal fade" id="analyticsModal" tabindex="-1" role="dialog" aria-labelledby="analyticsModalLabel"
|
<div class="modal fade" id="analyticsModal" tabindex="-1" role="dialog" aria-labelledby="analyticsModalLabel"
|
||||||
aria-hidden="true" th:if="${@analyticsPrompt}">
|
aria-hidden="true" th:if="${@analyticsPrompt}">
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
@ -187,18 +181,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer justify-content-between">
|
<div class="modal-footer justify-content-between">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" onclick="setAnalytics(false)"
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" onclick="setAnalytics(false)"
|
||||||
th:text="#{analytics.disable}">Disable analytics
|
th:text="#{analytics.disable}">Disable analytics</button>
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-primary" th:text="#{analytics.enable}"
|
<button type="button" class="btn btn-primary" th:text="#{analytics.enable}"
|
||||||
onclick="setAnalytics(true)">Enable analytics
|
onclick="setAnalytics(true)">Enable analytics</button>
|
||||||
</button>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.favorite-icon {
|
.favorite-icon {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 0rem;
|
width: 0rem;
|
||||||
@ -212,17 +204,17 @@
|
|||||||
.toggle-favourites.active {
|
.toggle-favourites.active {
|
||||||
color: gold;
|
color: gold;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script th:src="@{'/js/fetch-utils.js'}"></script>
|
<script th:src="@{'/js/fetch-utils.js'}"></script>
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
/*<![CDATA[*/
|
/*<![CDATA[*/
|
||||||
window.analyticsPromptBoolean = /*[[${@analyticsPrompt}]]*/ false;
|
window.analyticsPromptBoolean = /*[[${@analyticsPrompt}]]*/ false;
|
||||||
/*]]>*/
|
/*]]>*/
|
||||||
|
|
||||||
window.showSurvey = /*[[${showSurveyFromDocker}]]*/ true
|
window.showSurvey = /*[[${showSurveyFromDocker}]]*/ true
|
||||||
</script>
|
</script>
|
||||||
<script th:src="@{'/js/pages/home.js'}" th:inline="javascript"></script>
|
<script th:src="@{'/js/pages/home.js'}" th:inline="javascript"></script>
|
||||||
<script>
|
<script>
|
||||||
function applyScale() {
|
function applyScale() {
|
||||||
const baseWidth = 1440;
|
const baseWidth = 1440;
|
||||||
const baseHeight = 1000;
|
const baseHeight = 1000;
|
||||||
@ -235,7 +227,7 @@
|
|||||||
|
|
||||||
window.addEventListener('resize', applyScale);
|
window.addEventListener('resize', applyScale);
|
||||||
window.addEventListener('load', applyScale);
|
window.addEventListener('load', applyScale);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
@ -12,12 +12,85 @@
|
|||||||
<br><br>
|
<br><br>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6 bg-card">
|
||||||
<h2 th:text="#{fakeScan.header}"></h2>
|
<div class="tool-header">
|
||||||
<form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/misc/fake-scan'}">
|
<span class="material-symbols-rounded tool-header-icon advance">scanner</span>
|
||||||
|
<span class="tool-header-text" th:text="#{fakeScan.title}"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form method="post" enctype="multipart/form-data" id="uploadForm" th:action="@{'/api/v1/misc/fake-scan'}">
|
||||||
|
<input type="hidden" name="advancedEnabled" id="advancedEnabled" value="false">
|
||||||
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multipleInputsForSingleRequest=false, accept='application/pdf')}"></div>
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multipleInputsForSingleRequest=false, accept='application/pdf')}"></div>
|
||||||
<br>
|
<br>
|
||||||
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{fakeScan.submit}"></button>
|
<div class="mb-3">
|
||||||
|
<label for="quality" class="form-label" th:text="#{fakeScan.quality}"></label>
|
||||||
|
<select class="form-select" id="quality" name="quality">
|
||||||
|
<option value="low" th:text="#{fakeScan.quality.low}"></option>
|
||||||
|
<option value="medium" th:text="#{fakeScan.quality.medium}"></option>
|
||||||
|
<option value="high" th:text="#{fakeScan.quality.high}" selected></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="rotation" class="form-label" th:text="#{fakeScan.rotation}"></label>
|
||||||
|
<select class="form-select" id="rotation" name="rotation">
|
||||||
|
<option value="none" th:text="#{fakeScan.rotation.none}"></option>
|
||||||
|
<option value="slight" th:text="#{fakeScan.rotation.slight}" selected></option>
|
||||||
|
<option value="moderate" th:text="#{fakeScan.rotation.moderate}"></option>
|
||||||
|
<option value="severe" th:text="#{fakeScan.rotation.severe}"></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-check mb-3">
|
||||||
|
<input class="form-check-input" type="checkbox" id="advancedSettingsToggle">
|
||||||
|
<label class="form-check-label" for="advancedSettingsToggle" th:text="#{fakeScan.advancedSettings}"></label>
|
||||||
|
</div>
|
||||||
|
<div id="advancedSettings" style="display:none; border:1px solid #eee; padding:1em; border-radius:8px; margin-bottom:1em;">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="colorspace" class="form-label" th:text="#{fakeScan.colorspace}"></label>
|
||||||
|
<select class="form-select" id="colorspace" name="colorspace">
|
||||||
|
<option value="grayscale" th:text="#{fakeScan.colorspace.grayscale}" selected></option>
|
||||||
|
<option value="color" th:text="#{fakeScan.colorspace.color}"></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="border" class="form-label" th:text="#{fakeScan.border}"></label>
|
||||||
|
<input type="number" class="form-control" id="border" name="border" min="0" max="100" value="20">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="rotate" class="form-label" th:text="#{fakeScan.rotate}"></label>
|
||||||
|
<input type="number" class="form-control" id="rotate" name="rotate" min="-15" max="15" value="0">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="rotateVariance" class="form-label" th:text="#{fakeScan.rotateVariance}"></label>
|
||||||
|
<input type="number" class="form-control" id="rotateVariance" name="rotateVariance" min="0" max="10" value="2">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="brightness" class="form-label" th:text="#{fakeScan.brightness}"></label>
|
||||||
|
<input type="range" class="form-range" id="brightness" name="brightness" min="0.5" max="1.5" step="0.01" value="1.0">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="contrast" class="form-label" th:text="#{fakeScan.contrast}"></label>
|
||||||
|
<input type="range" class="form-range" id="contrast" name="contrast" min="0.5" max="1.5" step="0.01" value="1.0">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="blur" class="form-label" th:text="#{fakeScan.blur}"></label>
|
||||||
|
<input type="range" class="form-range" id="blur" name="blur" min="0" max="5" step="0.1" value="1.0">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="noise" class="form-label" th:text="#{fakeScan.noise}"></label>
|
||||||
|
<input type="range" class="form-range" id="noise" name="noise" min="0" max="20" step="0.1" value="8.0">
|
||||||
|
</div>
|
||||||
|
<div class="form-check mb-3">
|
||||||
|
<input class="form-check-input" type="checkbox" id="yellowish" name="yellowish">
|
||||||
|
<label class="form-check-label" for="yellowish" th:text="#{fakeScan.yellowish}"></label>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="resolution" class="form-label" th:text="#{fakeScan.resolution}"></label>
|
||||||
|
<input type="number" class="form-control" id="resolution" name="resolution" min="72" max="600" value="300">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 text-left">
|
||||||
|
<button type="submit" class="btn btn-primary" th:text="#{fakeScan.submit}" id="submitBtn"></button>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -25,5 +98,66 @@
|
|||||||
</div>
|
</div>
|
||||||
<th:block th:insert="~{fragments/footer.html :: footer}"></th:block>
|
<th:block th:insert="~{fragments/footer.html :: footer}"></th:block>
|
||||||
</div>
|
</div>
|
||||||
|
<script th:src="@{'/js/fetch-utils.js'}"></script>
|
||||||
|
<script th:inline="javascript">
|
||||||
|
// Show/hide advanced settings
|
||||||
|
document.getElementById('advancedSettingsToggle').addEventListener('change', function() {
|
||||||
|
document.getElementById('advancedSettings').style.display = this.checked ? 'block' : 'none';
|
||||||
|
});
|
||||||
|
|
||||||
|
// Form submission handling
|
||||||
|
const form = document.getElementById('uploadForm');
|
||||||
|
if (form) {
|
||||||
|
form.addEventListener('submit', function(e) {
|
||||||
|
// If advanced settings are not enabled, remove advanced fields
|
||||||
|
if (!document.getElementById('advancedSettingsToggle').checked) {
|
||||||
|
const formData = new FormData(form);
|
||||||
|
formData.delete('colorspace');
|
||||||
|
formData.delete('border');
|
||||||
|
formData.delete('rotate');
|
||||||
|
formData.delete('rotateVariance');
|
||||||
|
formData.delete('brightness');
|
||||||
|
formData.delete('contrast');
|
||||||
|
formData.delete('blur');
|
||||||
|
formData.delete('noise');
|
||||||
|
formData.delete('yellowish');
|
||||||
|
formData.delete('resolution');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize advanced settings state
|
||||||
|
const advancedSettingsToggle = document.getElementById('advancedSettingsToggle');
|
||||||
|
const advancedSettings = document.getElementById('advancedSettings');
|
||||||
|
if (advancedSettingsToggle && advancedSettings) {
|
||||||
|
// Helper: enable/disable all fields in advanced settings
|
||||||
|
function setAdvancedFieldsEnabled(enabled) {
|
||||||
|
const fields = advancedSettings.querySelectorAll('input, select');
|
||||||
|
fields.forEach(field => {
|
||||||
|
field.disabled = !enabled;
|
||||||
|
// If enabling and value is empty, set to default
|
||||||
|
if (enabled && (field.value === '' || field.value == null)) {
|
||||||
|
if (field.type === 'number' || field.type === 'range') {
|
||||||
|
field.value = field.defaultValue;
|
||||||
|
} else if (field.type === 'checkbox') {
|
||||||
|
field.checked = field.defaultChecked;
|
||||||
|
} else if (field.tagName === 'SELECT') {
|
||||||
|
field.value = field.querySelector('option[selected]')?.value || field.options[0].value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Set initial state
|
||||||
|
setAdvancedFieldsEnabled(advancedSettingsToggle.checked);
|
||||||
|
advancedSettings.style.display = advancedSettingsToggle.checked ? 'block' : 'none';
|
||||||
|
document.getElementById('advancedEnabled').value = advancedSettingsToggle.checked ? 'true' : 'false';
|
||||||
|
// Add change listener
|
||||||
|
advancedSettingsToggle.addEventListener('change', function() {
|
||||||
|
advancedSettings.style.display = this.checked ? 'block' : 'none';
|
||||||
|
setAdvancedFieldsEnabled(this.checked);
|
||||||
|
document.getElementById('advancedEnabled').value = this.checked ? 'true' : 'false';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
x
Reference in New Issue
Block a user