Freaking CSS. Trying to make the admin page...work.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4385 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		| @@ -9,6 +9,7 @@ tfrpc.register(function global_settings_set(key, value) { | ||||
| }); | ||||
|  | ||||
| async function main() { | ||||
| 	try { | ||||
| 		let data = { | ||||
| 			users: {}, | ||||
| 			granted: await core.allPermissionsGranted(), | ||||
| @@ -18,5 +19,8 @@ async function main() { | ||||
| 			data.users[user] = await core.permissionsForUser(user); | ||||
| 		} | ||||
| 		await app.setDocument(utf8Decode(getFile('index.html')).replace('$data', JSON.stringify(data))); | ||||
| 	} catch { | ||||
| 		await app.setDocument('<span style="color: #f00">Only an administrator can modify these settings.</span>'); | ||||
| 	} | ||||
| } | ||||
| main(); | ||||
| @@ -1,9 +1,9 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
| <html style="width: 100%"> | ||||
| 	<head> | ||||
| 		<script>const g_data = $data;</script> | ||||
| 	</head> | ||||
| 	<body style="color: #fff"> | ||||
| 	<body style="color: #fff; width: 100%"> | ||||
| 		<h1>Tilde Friends Administration</h1> | ||||
| 	</body> | ||||
| 	<script type="module" src="script.js"></script> | ||||
|   | ||||
| @@ -25,29 +25,37 @@ window.addEventListener('load', function() { | ||||
| 	function input_template(key, description) { | ||||
| 		if (description.type === 'boolean') { | ||||
| 			return html` | ||||
| 				<label ?for=${'gs_' + key} style="grid-column: 1">${key}: </label> | ||||
| 				<input type="checkbox" ?checked=${description.value} ?id=${'gs_' + key} style="grid-column: 2"></input> | ||||
| 				<div style="grid-column: 3"> | ||||
| 				<div style="margin-top: 1em"> | ||||
| 					<label for=${'gs_' + key} style="font-weight: bold">${key}: </label> | ||||
| 					<div> | ||||
| 						<input type="checkbox" ?checked=${description.value} id=${'gs_' + key}></input> | ||||
| 						<button @click=${(e) => global_settings_set(key, e.srcElement.parentElement.previousElementSibling.checked)}>Set</button> | ||||
| 					<span>${description.description}</span> | ||||
| 						<div>${description.description}</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			`; | ||||
| 		} else if (description.type === 'textarea') { | ||||
| 			return html` | ||||
| 				<label ?for=${'gs_' + key} style="grid-column: 1">${key}: </label> | ||||
| 				<textarea style="vertical-align: top" rows=20 cols=80 ?id=${'gs_' + key}>${description.value}</textarea> | ||||
| 				<div style="grid-column: 3"> | ||||
| 				<div style="margin-top: 1em""> | ||||
| 					<label for=${'gs_' + key} style="font-weight: bold">${key}: </label> | ||||
| 					<div style="width: 100%; padding: 0; margin: 0"> | ||||
| 						<div style="width: 90%; padding: 0 margin: 0"> | ||||
| 							<textarea style="vertical-align: top; width: 100%" rows=20 cols=80 id=${'gs_' + key}>${description.value}</textarea> | ||||
| 						</div> | ||||
| 						<button @click=${(e) => global_settings_set(key, e.srcElement.parentElement.previousElementSibling.value)}>Set</button> | ||||
| 					<span>${description.description}</span> | ||||
| 						<div>${description.description}</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			`; | ||||
| 		} else { | ||||
| 			return html` | ||||
| 				<label ?for=${'gs_' + key} style="grid-column: 1">${key}: </label> | ||||
| 				<input type="text" value="${description.value}" ?id=${'gs_' + key}></input> | ||||
| 				<div style="grid-column: 3"> | ||||
| 				<div style="margin-top: 1em"> | ||||
| 					<label for=${'gs_' + key} style="font-weight: bold">${key}: </label> | ||||
| 					<div> | ||||
| 						<input type="text" value="${description.value}" id=${'gs_' + key}></input> | ||||
| 						<button @click=${(e) => global_settings_set(key, e.srcElement.parentElement.previousElementSibling.value)}>Set</button> | ||||
| 					<span>${description.description}</span> | ||||
| 						<div>${description.description}</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			`; | ||||
| 		} | ||||
| @@ -67,12 +75,13 @@ window.addEventListener('load', function() { | ||||
| 			${Object.entries(users).map(u => user_template(u[0], u[1]))} | ||||
| 		</ul>`; | ||||
| 	const page_template = (data) => | ||||
| 		html`<div> | ||||
| 		html`<div style="padding: 0; margin: 0; width: 100%; max-width: 100%"> | ||||
| 			<h2>Global Settings</h2> | ||||
| 		<div style="display: grid"> | ||||
| 			<div> | ||||
| 			${Object.keys(data.settings).sort().map(x => html`${input_template(x, data.settings[x])}`)} | ||||
| 			</div> | ||||
| 			${users_template(data.users)} | ||||
| 		</div>`; | ||||
| 		</div> | ||||
| 		`; | ||||
| 	render(page_template(g_data), document.body); | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user