diff src/admin/add.html.luan @ 0:dfc36e7ed22c

init
author Vadim Filimonov <fffilimonov@yandex.ru>
date Thu, 12 May 2022 13:51:59 +0400
parents
children a09d8bcdc0f9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/admin/add.html.luan	Thu May 12 13:51:59 2022 +0400
@@ -0,0 +1,51 @@
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local Io = require "luan:Io.luan"
+local Http = require "luan:http/Http.luan"
+local Shared = require "site:/lib/Shared.luan"
+local head = Shared.head or error()
+local header = Shared.admin_header or error()
+local get_user = Shared.get_user or error()
+local get_raw_config = Shared.get_raw_config or error()
+local save_raw_config = Shared.save_raw_config or error()
+local admin_return = Shared.admin_return or error()
+
+
+local function handle()
+	local user = get_user()
+	local repo_name = Http.request.parameters.repo or error()
+	if repo_name=="_all" or repo_name=="_private" then
+		return [[<p error>Invalid rep name</p>]]
+	end
+	local raw_config = get_raw_config()
+	if raw_config.repos[repo_name] ~= nil then
+		return [[<p error>A repo named <b>]]..repo_name..[[</b> already exists</p>]]
+	end
+	raw_config.repos[repo_name] = {
+		mode = "public"
+		users = {user}
+		admins = {user}
+	}
+	save_raw_config(raw_config)
+	return [[<p>Repo <b>]]..repo_name..[[</b> created</p>]]..admin_return
+end
+
+return function()
+	Io.stdout = Http.response.text_writer()
+%>
+<!doctype html>
+<html>
+	<head>
+<%		head() %>
+		<title>Add Mercurial Repository</title>
+	</head>
+	<body>
+<%		header() %>
+		<div content>
+			<h1>Add Repository</h1>
+			<%=handle()%>
+		</div>
+	</body>
+</html>
+<%
+end