Skip to content

Commit ff29010

Browse files
authored
Create testing.html
1 parent cbe6e67 commit ff29010

File tree

1 file changed

+209
-0
lines changed

1 file changed

+209
-0
lines changed

testing.html

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Test Uploads - Mod-Sauce Dev's</title>
7+
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico?">
8+
<link rel="stylesheet" type="text/css" href="style.css">
9+
<style>
10+
.upload-card {
11+
max-width: 500px;
12+
margin: 3rem auto;
13+
transition: all 0.3s ease;
14+
}
15+
16+
.input-group {
17+
margin: 1.5rem 0;
18+
opacity: 1;
19+
max-height: 200px;
20+
overflow: hidden;
21+
transition: all 0.3s ease;
22+
}
23+
24+
.input-group.hidden {
25+
opacity: 0;
26+
max-height: 0;
27+
margin: 0;
28+
}
29+
30+
.input-group label {
31+
display: block;
32+
font-size: 1.1rem;
33+
margin-bottom: 0.5rem;
34+
color: var(--text-primary);
35+
font-weight: 500;
36+
}
37+
38+
.input-group select {
39+
width: 100%;
40+
padding: 0.8rem;
41+
font-size: 1rem;
42+
background: var(--bg-secondary);
43+
color: var(--text-primary);
44+
border: 1px solid var(--border-color);
45+
border-radius: 6px;
46+
cursor: pointer;
47+
font-family: 'Inter', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
48+
transition: all 0.3s ease;
49+
}
50+
51+
.input-group select:hover {
52+
border-color: var(--accent-color);
53+
}
54+
55+
.input-group select:focus {
56+
outline: none;
57+
border-color: var(--accent-color);
58+
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
59+
}
60+
61+
#download-btn {
62+
width: 100%;
63+
text-align: center;
64+
}
65+
</style>
66+
</head>
67+
<body>
68+
<!-- Accessible Navigation -->
69+
<nav class="navbar site-nav" role="navigation" aria-label="Main">
70+
<div class="nav-content">
71+
<a href="index.html" class="logo">
72+
<img src="favicon.ico" alt="Mod-Sauce Logo">
73+
Mod-Sauce Dev's
74+
</a>
75+
76+
<button id="nav-toggle" class="burger" aria-expanded="false" aria-controls="primary-menu" aria-label="Toggle menu">
77+
<span class="burger-box"><span class="burger-inner"></span></span>
78+
</button>
79+
80+
<div id="primary-menu" class="nav-menu" hidden>
81+
<div class="nav-links">
82+
<a href="index.html">Home</a>
83+
<a href="about.html">About</a>
84+
<div class="dropdown">
85+
<a href="#">Projects ▼</a>
86+
<div class="dropdown-menu">
87+
<a href="impr.html">IMP Renewed</a>
88+
<a href="oer.html">Otyacraft Engine Renewed</a>
89+
</div>
90+
</div>
91+
<a href="test-uploads.html" class="active">Test Uploads</a>
92+
</div>
93+
</div>
94+
95+
<button id="theme-toggle" class="theme-toggle" aria-pressed="false" aria-label="Toggle color theme">
96+
<span class="icon-sun" aria-hidden="true">☀️</span>
97+
<span class="icon-moon" aria-hidden="true">🌙</span>
98+
</button>
99+
</div>
100+
</nav>
101+
102+
<!-- Main Content -->
103+
<main class="main-content">
104+
<div class="card upload-card">
105+
<div class="input-group">
106+
<label for="project-select">Project</label>
107+
<select id="project-select">
108+
<option value="">Select Project</option>
109+
</select>
110+
</div>
111+
112+
<div class="input-group hidden" id="version-group">
113+
<label for="version-select">Version</label>
114+
<select id="version-select">
115+
<option value="">Select Version</option>
116+
</select>
117+
</div>
118+
119+
<div class="input-group hidden" id="download-group">
120+
<a href="#" id="download-btn" class="btn">Download</a>
121+
</div>
122+
</div>
123+
</main>
124+
125+
<script src="assets/js/nav-theme.js"></script>
126+
<script>
127+
let downloadsConfig = {};
128+
129+
fetch('downloads.txt')
130+
.then(res => res.text())
131+
.then(data => {
132+
downloadsConfig = parseConfig(data);
133+
populateProjects();
134+
})
135+
.catch(err => {
136+
console.error('Error loading downloads.txt:', err);
137+
});
138+
139+
function parseConfig(text) {
140+
const lines = text.split('\n').filter(line => line.trim() && !line.trim().startsWith('#'));
141+
const config = {};
142+
let currentProject = null;
143+
144+
lines.forEach(line => {
145+
const trimmed = line.trim();
146+
147+
if (!line.startsWith(' ') && !line.startsWith('\t')) {
148+
currentProject = trimmed;
149+
config[currentProject] = {};
150+
} else if (currentProject && trimmed.includes('=')) {
151+
const [version, url] = trimmed.split('=').map(s => s.trim());
152+
config[currentProject][version] = url;
153+
}
154+
});
155+
156+
return config;
157+
}
158+
159+
function populateProjects() {
160+
const projectSelect = document.getElementById('project-select');
161+
const projects = Object.keys(downloadsConfig);
162+
163+
projects.forEach(project => {
164+
const option = document.createElement('option');
165+
option.value = project;
166+
option.textContent = project;
167+
projectSelect.appendChild(option);
168+
});
169+
}
170+
171+
document.getElementById('project-select').addEventListener('change', function() {
172+
const versionGroup = document.getElementById('version-group');
173+
const downloadGroup = document.getElementById('download-group');
174+
const versionSelect = document.getElementById('version-select');
175+
const project = this.value;
176+
177+
versionSelect.innerHTML = '<option value="">Select Version</option>';
178+
downloadGroup.classList.add('hidden');
179+
180+
if (project && downloadsConfig[project]) {
181+
const versions = Object.keys(downloadsConfig[project]);
182+
versions.forEach(version => {
183+
const option = document.createElement('option');
184+
option.value = version;
185+
option.textContent = version;
186+
versionSelect.appendChild(option);
187+
});
188+
versionGroup.classList.remove('hidden');
189+
} else {
190+
versionGroup.classList.add('hidden');
191+
}
192+
});
193+
194+
document.getElementById('version-select').addEventListener('change', function() {
195+
const downloadGroup = document.getElementById('download-group');
196+
const downloadBtn = document.getElementById('download-btn');
197+
const project = document.getElementById('project-select').value;
198+
const version = this.value;
199+
200+
if (project && version && downloadsConfig[project][version]) {
201+
downloadBtn.href = downloadsConfig[project][version];
202+
downloadGroup.classList.remove('hidden');
203+
} else {
204+
downloadGroup.classList.add('hidden');
205+
}
206+
});
207+
</script>
208+
</body>
209+
</html>

0 commit comments

Comments
 (0)