This commit is contained in:
2025-05-08 21:27:29 -05:00
parent c143b8d3a5
commit 7456bf9bc0
49 changed files with 604 additions and 1197 deletions

View File

@@ -0,0 +1,119 @@
func Pages.Account(ctx)
{
var name = ctx.QueryParams.TryGetFirst("name");
if(TypeOf(name) != "String") name = "";
var active = DB.LoginButton(ctx,false,name);
var pages = [
{
active = false,
route = "/packages",
text = "Packages"
},
{
active = false,
route = "/upload",
text = "Upload"
},
active
];
var user = DB.GetAccountInfo(name);
var motto_ta = TypeOf(user.motto) == "String" ? user.motto : "";
//var motto=Net.Http.HtmlEncode(motto_ta).Replace("\r","").Replace("\n","<br>");
var motto = "";
if(!active.active)
{
var builder = "";
func flush()
{
if(builder.Length > 0)
{
if(builder.StartsWith("http://") || builder.StartsWith("https://") || builder.StartsWith("ftp://") || builder.StartsWith("ftps://") || builder.StartsWith("magnet:"))
{
motto += <a href={builder}>{builder}</a>;
}
else if(builder.StartsWith("mailto:"))
{
motto += <a href={builder}>{builder.Substring(7)}</a>;
}
else if(builder.StartsWith("tel:"))
{
motto += <a href={builder}>{builder.Substring(4)}</a>;
}
else
{
motto += Net.Http.HtmlEncode(builder);
}
builder="";
}
}
each(var item : motto_ta)
{
switch(item)
{
case ' ':
flush();
motto += " ";
break;
case '\n':
flush();
motto += "<br>";
break;
case '\t':
flush();
motto+= "&tab;";
break;
case '\r':
flush();
break;
default:
builder += item;
break;
}
}
flush();
}
var html =
<div class="container">
<if(TypeOf(user) == "Dictionary")>
<true>
<h1>{user.accountName}</h1>
<a href={$"./account_packages?name={Net.Http.UrlEncode(name)}"}>Packages</a>
<if(active.active)>
<true>
<form action="./change_motto" method="POST">
<if(motto_ta.Length == 0)>
<true><textarea class="form-control" name="motto" placeholder="Type your motto and/or links here" id="floatingTextarea2" style="height: 100px"></textarea></true>
<false><textarea class="form-control" name="motto" placeholder="Type your motto and/or links here" id="floatingTextarea2" style="height: 100px">{motto_ta}</textarea></false>
</if>
<input class="btn btn-primary" type="submit" value="Save">
<input type="hidden" name="csrf" value={DB.CreateCSRF(ctx)}>
<a class="btn btn-danger" href="./logout">Logout</a>
</form>
</true>
<false>
<hr>
<p><raw(motto)></p>
</false>
</if>
</true>
<false>
<if(TypeOf(user) == "String")><true>
<div>
{user}
</div>
</true></if>
</false>
</if></div>;
return Shell($"Account {name}", pages,html);
}

View File

@@ -1,4 +1,4 @@
func Pages.CheckEmail()
func Pages.CheckEmail(ctx)
{
var pages = [
{
@@ -11,11 +11,7 @@ func Pages.CheckEmail()
route = "/upload",
text = "Upload"
},
{
active = false,
route = "/login",
text = "Login"
}
DB.LoginButton(ctx,false)
];
var html = <div class={"container"}>
<h1>Please check your email.</h1>

View File

@@ -1,4 +1,4 @@
func Pages.Index()
func Pages.Index(ctx)
{
var pages = [
@@ -12,11 +12,7 @@ func Pages.Index()
route = "/upload",
text = "Upload"
},
{
active = false,
route = "/login",
text = "Login"
}
DB.LoginButton(ctx,false)
];
var html = <article><h1 class={"display-5"} style={"text-align: center;"}>Make crosslang development faster and more convenient with CPKG</h1><form action={"./packages"} method={"get"}><div class={"container text-center"}><div class={"row"}><div class={"col"}>

View File

@@ -1,4 +1,4 @@
func Pages.Login()
func Pages.Login(ctx)
{
var pages = [
{
@@ -11,11 +11,7 @@ func Pages.Login()
route = "/upload",
text = "Upload"
},
{
active = true,
route = "/login",
text = "Login"
}
DB.LoginButton(ctx,true)
];
var html = <div class={"container min-vh-100 d-flex justify-content-center align-items-center"}>
<form action={"./login"} method={"post"} enctype={"application/x-www-form-urlencoded"}>

View File

@@ -1,4 +1,4 @@
func Pages.Package(name)
func Pages.Package(ctx,name)
{
var package = DB.GetPackageVersions(name);
@@ -13,16 +13,12 @@ func Pages.Package(name)
route = "/upload",
text = "Upload"
},
{
active = false,
route = "/login",
text = "Login"
}
DB.LoginButton(ctx,false)
];
var html = <if(package.Length > 0)><section class={"container"}>
var html = <if(package.Length > 0)><true><section class={"container"}>
<br>
<img width={"64"} height={"64"} src={$"./api/v1/package_icon.png?name={Net.Http.UrlEncode(name)}&version={Net.Http.UrlEncode(package[0].version)}"} alt={"icon"}>
<h1>{name}</h1>
@@ -42,7 +38,9 @@ func Pages.Package(name)
<div class={"card-body"}>
<if(package[0].type == "lib" || package[0].type == "compile_tool")>
<true>
crosslang add-dependency {name}
</true>
</if>
</div>
</div>
@@ -60,16 +58,24 @@ func Pages.Package(name)
<ul>
<li>Account: <a href={$"./account?name={Net.Http.UrlEncode(package[0].accountName)}"}>{package[0].accountName}</a></li>
<if(package[0].maintainer.Length > 0)>
<true>
<li>Maintainer: {package[0].maintainer}</li>
</true>
</if>
<if(package[0].license.Length > 0)>
<true>
<li>License: {package[0].license}</li>
</true>
</if>
<if(package[0].homepage.Length > 0)>
<true>
<li>Homepage: <a href={package[0].homepage}>{package[0].homepage}</a></li>
</true>
</if>
<if(package[0].repo.Length > 0)>
<true>
<li>Repo: <a href={package[0].repo}>{package[0].repo}</a></li>
</true>
</if>
<li>Last updated: {package[0].uploadDate}</li>
<li>Latest version: {package[0].version}</li>
@@ -77,6 +83,7 @@ func Pages.Package(name)
<li><a href={package[0].download}>Download</a></li>
</ul>
<if(package.Length > 1)>
<true>
<br>
<h3>Older versions</h3>
@@ -92,16 +99,24 @@ func Pages.Package(name)
<div class={"accordion-body"}>
<ul>
<if(package[i].maintainer.Length > 0)>
<true>
<li>Maintainer: {package[i].maintainer}</li>
</true>
</if>
<if(package[i].license.Length > 0)>
<true>
<li>License: {package[i].license}</li>
</true>
</if>
<if(package[i].homepage.Length > 0)>
<true>
<li>Homepage: <a href={package[i].homepage}>{package[i].homepage}</a></li>
</true>
</if>
<if(package[i].repo.Length > 0)>
<true>
<li>Repo: <a href={package[i].repo}>{package[i].repo}</a></li>
</true>
</if>
<li>Uploaded: {package[i].uploadDate}</li>
<li>Type: {package[i].type}</li>
@@ -113,8 +128,9 @@ func Pages.Package(name)
</for>
</div>
</true>
</if>
</section>
</section></true>
</if>;
return Shell($"Package {name}", pages,html);
}

View File

@@ -13,11 +13,7 @@ func Pages.Packages(ctx)
route = "/upload",
text = "Upload"
},
{
active = false,
route = "/login",
text = "Login"
}
DB.LoginButton(ctx,false)
];
var html = <article><form action={"./packages"} method={"get"}><div class={"container text-center"}><div class={"row"}><div class={"col"}>

View File

@@ -1,4 +1,4 @@
func Pages.Signup()
func Pages.Signup(ctx)
{
var pages = [
{
@@ -11,11 +11,7 @@ func Pages.Signup()
route = "/upload",
text = "Upload"
},
{
active = false,
route = "/login",
text = "Login"
}
DB.LoginButton(ctx,false)
];
var html = <div class={"container min-vh-100 d-flex justify-content-center align-items-center"}>
<form action={"./signup"} method={"post"} enctype={"application/x-www-form-urlencoded"}>

View File

@@ -11,12 +11,9 @@ func Pages.Upload(ctx)
route = "/upload",
text = "Upload"
},
{
active = false,
route = "/login",
text = "Login"
}
DB.LoginButton(ctx,false)
];
var html = <div class={"container min-vh-100 d-flex justify-content-center align-items-center"}>
<form action={"./upload"} method={"post"} enctype={"multipart/form-data"}>
<h1>Upload Package</h1>