New version site.

This commit is contained in:
retoor 2024-12-23 01:10:53 +00:00
parent 83b5464f47
commit 87a1ca1a7b
7 changed files with 437 additions and 84 deletions

View File

@ -1,3 +1,5 @@
{{if false}} {{if false}}
{{/* to make html structure "likely" complete to prevent IDE warnings */}} {{/* to make html structure "likely" complete to prevent IDE warnings */}}
<html> <html>
@ -14,6 +16,10 @@
{{template "base/footer_content" .}} {{template "base/footer_content" .}}
<script src="{{AssetUrlPrefix}}/js/index.js?v={{AssetVersion}}" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script> <script src="{{AssetUrlPrefix}}/js/index.js?v={{AssetVersion}}" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script>
<script>
</script>
{{template "custom/footer" .}} {{template "custom/footer" .}}
</body> </body>

View File

@ -1,7 +1,7 @@
<footer class="page-footer" role="group" aria-label="{{ctx.Locale.Tr "aria.footer"}}"> <footer class="page-footer" role="group" aria-label="{{ctx.Locale.Tr "aria.footer"}}">
<div class="left-links" role="contentinfo" aria-label="{{ctx.Locale.Tr "aria.footer.software"}}"> <div class="left-links" role="contentinfo" aria-label="{{ctx.Locale.Tr "aria.footer.software"}}">
{{if ShowFooterPoweredBy}} {{if and .IsSigned ShowFooterPoweredBy}}
{{end}}
{{if (or .ShowFooterVersion .PageIsAdmin)}} {{if (or .ShowFooterVersion .PageIsAdmin)}}
{{ctx.Locale.Tr "version"}}: {{ctx.Locale.Tr "version"}}:
{{if .IsAdmin}} {{if .IsAdmin}}
@ -10,15 +10,18 @@
{{AppVer}} {{AppVer}}
{{end}} {{end}}
{{end}} {{end}}
{{end}}
{{if and .TemplateLoadTimes ShowFooterTemplateLoadTime}} {{if and .TemplateLoadTimes ShowFooterTemplateLoadTime}}
{{ctx.Locale.Tr "page"}}: <strong>{{LoadTimes .PageStartTime}}</strong> Response time: <strong>{{LoadTimes .PageStartTime}}</strong>
{{end}} {{end}}
</div> </div>
<div class="right-links" role="group" aria-label="{{ctx.Locale.Tr "aria.footer.links"}}"> <div class="right-links" role="group" aria-label="{{ctx.Locale.Tr "aria.footer.links"}}">
{{ if false }}
<div class="ui dropdown upward language"> <div class="ui dropdown upward language">
<!--
<span class="flex-text-inline">{{svg "octicon-globe" 14}} {{ctx.Locale.LangName}}</span> <span class="flex-text-inline">{{svg "octicon-globe" 14}} {{ctx.Locale.LangName}}</span>
<div class="menu language-menu"> <div class="menu language-menu">
{{range .AllLangs}} {{range .AllLangs}}
@ -26,9 +29,10 @@
{{end}} {{end}}
</div> </div>
-->
</div> </div>
{{ end }}
<a href="https://mail.molodetz.nl/SOGo/">Mail</a> <a href="https://mail.molodetz.nl/SOGo/">Mail</a>
<a href="{{AssetUrlPrefix}}/licenses.txt">{{ctx.Locale.Tr "licenses"}}</a> <a href="{{AssetUrlPrefix}}/licenses.txt">{{ctx.Locale.Tr "licenses"}}</a>
{{if .EnableSwagger}}<a href="{{AppSubUrl}}/api/swagger">API</a>{{end}} {{if .EnableSwagger}}<a href="{{AppSubUrl}}/api/swagger">API</a>{{end}}

View File

@ -2,7 +2,7 @@
<html lang="{{ctx.Locale.Lang}}" data-theme="{{UserThemeName .SignedUser}}"> <html lang="{{ctx.Locale.Lang}}" data-theme="{{UserThemeName .SignedUser}}">
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{if .Title}}{{.Title}} - {{end}}{{if .Repository.Name}}{{.Repository.Name}} - {{end}}{{AppName}}</title> <title>{{if and false .Title}}{{.Title}} - {{end}}{{if .Repository.Name}}{{.Repository.Name}} - {{end}}{{ if false }}{{AppName}}{{ end }}Molodetz Institute</title>
{{if .ManifestData}}<link rel="manifest" href="data:{{.ManifestData}}">{{end}} {{if .ManifestData}}<link rel="manifest" href="data:{{.ManifestData}}">{{end}}
<meta name="author" content="{{if .Repository}}{{.Owner.Name}}{{else}}{{MetaAuthor}}{{end}}"> <meta name="author" content="{{if .Repository}}{{.Owner.Name}}{{else}}{{MetaAuthor}}{{end}}">
<meta name="description" content="{{if .Repository}}{{.Repository.Name}}{{if .Repository.Description}} - {{.Repository.Description}}{{end}}{{else}}{{MetaDescription}}{{end}}"> <meta name="description" content="{{if .Repository}}{{.Repository.Name}}{{if .Repository.Description}} - {{.Repository.Description}}{{end}}{{else}}{{MetaDescription}}{{end}}">
@ -20,6 +20,7 @@
<link rel="alternate icon" href="{{AssetUrlPrefix}}/img/favicon.png" type="image/png"> <link rel="alternate icon" href="{{AssetUrlPrefix}}/img/favicon.png" type="image/png">
{{template "base/head_script" .}} {{template "base/head_script" .}}
{{template "base/terms_script" .}}
<noscript> <noscript>
<style> <style>
.dropdown:hover > .menu { display: block; } .dropdown:hover > .menu { display: block; }
@ -27,13 +28,25 @@
</style> </style>
</noscript> </noscript>
{{template "base/head_opengraph" .}} {{template "base/head_opengraph" .}}
{{template "base/head_style" .}} {{template "base/head_style" .}}
{{template "base/head_style2" .}}
{{template "custom/header" .}} {{template "custom/header" .}}
</head> </head>
<body hx-headers='{"x-csrf-token": "{{.CsrfToken}}"}' hx-swap="outerHTML" hx-ext="morph" hx-push-url="false"> <body hx-headers='{"x-csrf-token": "{{.CsrfToken}}"}' hx-swap="outerHTML" hx-ext="morph" hx-push-url="false">
{{template "custom/body_outer_pre" .}} {{template "custom/body_outer_pre" .}}
<div class="full height">
<div class="full height" style="padding:0;">
<noscript>{{ctx.Locale.Tr "enable_javascript"}}</noscript> <noscript>{{ctx.Locale.Tr "enable_javascript"}}</noscript>
{{template "custom/body_inner_pre" .}} {{template "custom/body_inner_pre" .}}

View File

@ -4,14 +4,46 @@
text-align:left; text-align:left;
} }
ul.tag-list {
list-style: none; /* Remove default bullet points */
padding: 0; /* Remove padding */
display: flex; /* Align items in a row */
flex-wrap: wrap; /* Allow wrapping to the next line */
gap: 10px; /* Add space between tags */
}
ul.tag-list li {
background-color: #ff6f61; /* Tag color */
color: white; /* Text color */
padding: 5px 10px; /* Padding inside tags */
border-radius: 20px; /* Rounded edges for tags */
font-size: 14px; /* Font size */
font-weight: bold; /* Bold text for emphasis */
display: inline-block; /* Ensure tag-like appearance */
cursor: default; /* Pointer to indicate non-clickable */
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Add shadow for depth */
transition: transform 0.2s ease; /* Smooth scaling effect */
}
</style> </style>
<canvas id="matrix"></canvas>
{{template "base/matrix_script" .}}
<script>
document.addEventListener("DOMContentLoaded", function () {
setTimeout(matrix,100);
});
</script>
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home"> <div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home">
<div class="ui stackable middle very relaxed page grid"> <div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column"> <div class="eight wide center column">
<div class="center"> <div class="center">
<div class="hero"> <div class="hero">
<h1 class="ui icon header title"> <h1 class="ui icon header title">
{{AppName}} Molodetz
</h1> </h1>
<h2>Home of Retoor</h2> <h2>Home of Retoor</h2>
<h3>Full Stack Software Developer</h3> <h3>Full Stack Software Developer</h3>
@ -20,76 +52,361 @@
</div> </div>
</div> </div>
{{if .HeatmapData}}
<div class="eight wide center column"> <div class="eight wide center column">
<h2 class="hero ui icon header">
C Development
</h2>
<p class="large">
With C I mostly reinvent to wheel and rewrite existing applications from scratch to learn what is under the hood. I am able to to write nginx-grade webservers with webdav support. I also have experience in writing Redis quality key-value stores. Projects made:
<li>HTTP(S) Server with support for reverse proxy and load balancing</li>
<li>WebDav Server with support for HTTP ranges (Streaming of media) and user authentication</li>
<li>PubSub Server</li>
<li>Restfull Sqlite3 Server</li>
I write servers primarely in C. WebDav, HTTP, PubSub
<li>JSON protocol: Only JSON communication for PubSub and database queries. Including Python bindings</li>
<li>Extremely fast json library, three times aster than Python's original to be used with JSON protocol.Has abaliity to find JSON data within data for parsing streams</lI>
</p>
</div>
<div class="eight wide center column">
<h2 class="hero ui icon header">
Python development
</h2>
<p class="large">
Python is my goto language for software development.
Technologies I prefer to work with but not limited to are:
<ul> <div id="user-heatmap" class="is-loading"
<li>Django</li> data-heatmap-data="{{JsonUtils.EncodeToString .HeatmapData}}"
<li>aiohttp</li> data-locale-total-contributions="{{ctx.Locale.Tr "heatmap.number_of_contributions_in_the_last_12_months" (ctx.Locale.PrettyNumber .HeatmapTotalContributions)}}"
<li>FastAPI</li> data-locale-no-contributions="{{ctx.Locale.Tr "heatmap.no_contributions"}}"
<li>dataset</li> data-locale-more="{{ctx.Locale.Tr "heatmap.more"}}"
</ul> data-locale-less="{{ctx.Locale.Tr "heatmap.less"}}"
</p> ></div>
</div> <div class="divider"></div>
<div class="eight wide center column">
<h2 class="hero ui icon header">
Databases
</h2>
<p class="large">
I have experience with:
<ul>
<li>MS SQL</li>
<li>Postgres SQL</li>
<li>MySQL</li>
<li>Redis</li>
<li>SQLite</li>
</ul>
</p>
</div> </div>
<div class="eight wide center column"> {{end}}
<h2 class="hero ui icon header">
Other languages
</h2>
<p class="large">
I have professional experience with:
<ul>
<li>C#</li>
<li>VB .NET</li>
<li>VB 6</li> <div class="eight wide center column">
<li>Java</li> <h3>C Development</h3>
<li>PHP</li> <p>With C, I mostly reinvent the wheel and rewrite existing applications from scratch to learn what is under the hood. I am able to write nginx-grade web servers with WebDAV support. I also have experience in writing Redis-quality key-value stores. Projects made:</p>
<li>Python</li> <ul>
<li>Delhpi (.NET)</li> <li>HTTP(S) Server with support for reverse proxy and load balancing</li>
<li>Actionscript</li> <li>WebDAV Server with support for HTTP ranges (Streaming of media) and user authentication</li>
<li>Node</li> <li>PubSub Server</li>
<li>JavaScript (ECMAScript)</li> <li>RESTful SQLite3 Server</li>
<li>HTML</li> <li>JSON protocol: Only JSON communication for PubSub and database queries, including Python bindings</li>
<li>CSS</li> <li>Extremely fast JSON library, three times faster than Python's original, to be used with JSON protocol. Has the ability to find JSON data within data for parsing streams</li>
</ul> </ul>
</p> </div>
<div class="eight wide center column">
<h3>Python Development</h3>
<p>Python is my go-to language for software development. Technologies I prefer to work with, but not limited to, are:</p>
<ul class="tag-list">
<li>Django</li>
<li>aiohttp</li>
<li>FastAPI</li>
<li>dataset</li>
</ul>
</div>
<div class="eight wide center column">
<h3>Databases</h3>
<p>I have experience with:</p>
<ul class="tag-list">
<li>MS SQL</li>
<li>PostgreSQL</li>
<li>MySQL</li>
<li>Redis</li>
<li>SQLite</li>
</ul>
</div>
<div class="eight wide center column">
<h3>Other Languages</h3>
<p>I have professional experience with:</p>
<ul class="tag-list">
<li>C#</li>
<li>VB .NET</li>
<li>VB 6</li>
<li>Java</li>
<li>PHP</li>
<li>Python</li>
<li>Delphi (.NET)</li>
<li>ActionScript</li>
<li>Node.js</li>
<li>JavaScript (ECMAScript)</li>
<li>HTML</li>
<li>CSS</li>
</ul>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>My own automated review system!</h3>
Gives a grade of just 6.5 for <a href="/retoor/drstats/src/branch/main/review.md">this project</a>. The irony, it should see his own source when it comes to mediocre code. In general, I do agree with many of the points my review system mentions. It's fun to try to keep it happy. It's a challenge. My review system makes a detailed page per source file but I don't publish that. Instead, a summary is generated based on those independent reviews. Those together define the grade the project gets. Higher than 8 is not achieved yet.
</div> </div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>My own refactor system!</h3>
Only destroyed one time my source code. The refactor applies best practices on source code of many source types. Besides that, it adds my name, a description of the file and the MIT license I use for all my projects. Every file looks quite maintained this way. I have to automate it to apply it on all my projects. It does make backups of original files and everything is in a repository ofcourse. No source code loss here!
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: app</h3>
<p>A foundational framework for applications, featuring a web server with an integrated database. The web server supports sessions, basic authentication, and database endpoints by default. Built on <code>aiohttp</code>, it can also be utilized for non-HTTP applications.</p>
<p><strong>Technologies:</strong> Python, aiohttp, SQL databases</p>
</div>
</div>
</div>
<div class="eight wide column">
<div class="center">
<div class="hero">
<h3>Project: ragnar</h3>
<p>An anti-spam bot designed for a developer community. This version serves as a proof of concept, demonstrating effectiveness despite the preliminary quality of the source code.</p>
<p><strong>Technologies:</strong> Python, bot framework</p>
</div>
</div>
</div>
<div class="eight wide column">
<div class="center">
<div class="hero">
<h3>Project: zamenyat</h3>
<p>An HTTP bridge that allows configurable content replacement. It can be used to create different versions of a website, such as an anonymous version alongside the original.</p>
<p><strong>Technologies:</strong> Python, HTTP proxy libraries</p>
</div>
</div>
</div>
<div class="eight wide column">
<div class="center">
<div class="hero">
<h3>Project: boeh</h3>
<p>A Matrix bot that responds with "boeh" when a user named Joe speaks. This project is marked as a template.</p>
<p><strong>Technologies:</strong> Python, Matrix API</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: gists</h3>
<p>A collection of information shared with others, likely containing various code snippets, notes, or documentation.</p>
<p><strong>Technologies:</strong> Markdown, various programming languages</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: drstats</h3>
<p>A project for generating detailed statistics in both text and graphical formats. It also creates a dataset suitable for use in Large Language Model embeddings, such as with <code>chromadb</code>.</p>
<p><strong>Technologies:</strong> Python, Matplotlib, Chromadb</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: molodetz.nl</h3>
<p>A customized Gitea configuration that transforms the site into a portfolio when not logged in, and into a development platform with a build server upon login.</p>
<p><strong>Technologies:</strong> Gitea, HTML/CSS, CI/CD tools</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: drapi.net</h3>
<p>A .NET implementation of the DevRant API, utilizing both web scraping and API integration to provide comprehensive functionality.</p>
<p><strong>Technologies:</strong> C#, .NET, Web scraping libraries</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: shadowssh</h3>
<p>A method to host SSH on a port already in use by another service, such as HTTPS, enabling SSH access without requiring additional open ports.</p>
<p><strong>Technologies:</strong> C, OpenSSH, Port multiplexing</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: tikker</h3>
<p>An application that monitors key presses, potentially useful for tracking typing activity or developing keyboard-related utilities.</p>
<p><strong>Technologies:</strong> Python, Keylogger libraries</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: form</h3>
<p>A RESTful form generator and validator with Cross-Site Request Forgery (CSRF) support, facilitating secure form handling in web applications.</p>
<p><strong>Technologies:</strong> Python, Flask, CSRF libraries</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: sorm</h3>
<p>A SQL library written in C, designed for fun and testing purposes, with support for Python integration. It aims to provide efficient database interactions for C applications.</p>
<p><strong>Technologies:</strong> C, SQL, Python bindings</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: rupload</h3>
<p>An upload page for sharing files on the web, allowing users to upload and distribute files easily.</p>
<p><strong>Technologies:</strong> Python, Flask, File storage systems</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: httpsbench</h3>
<p>An application for benchmarking HTTPS servers, useful for assessing server performance under different conditions.</p>
<p><strong>Technologies:</strong> Python, Requests library, Performance testing tools</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: random-name</h3>
<p>A microservice that returns unique random names, potentially useful for generating placeholder names in applications or during testing.</p>
<p><strong>Technologies:</strong> Python, Random module, REST API</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: dot</h3>
<p>An application that frequently prints a dot; the description suggests it's a simple or experimental project.</p>
<p><strong>Technologies:</strong> Python</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: zhurnal</h3>
<p>An application for running and monitoring processes through the web, providing a live stream of stdout and stderr. It can be used for tailing logs or as a service runner similar to Supervisor.</p>
<p><strong>Technologies:</strong> Python, WebSockets, Supervisor</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: yura</h3>
<p>An asynchronous client for the Katya AI server, facilitating communication with the AI service.</p>
<p><strong>Technologies:</strong> Python, Asyncio, Katya AI API</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: llmbox</h3>
<p>A frontend for Large Language Models (LLMs) using the Yura client and Katya LLM Server, providing an interface for interacting with AI models.</p>
<p><strong>Technologies:</strong> Python, Yura client, Katya AI API</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: rchat</h3>
<p>An anonymous chat application that allows users to communicate without revealing their identities.</p>
<p><strong>Technologies:</strong> HTML, JavaScript, WebSockets</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: mololog</h3>
<p>An HTTP log server and multi-threaded client for Python applications, facilitating efficient logging over HTTP.</p>
<p><strong>Technologies:</strong> Python, HTTP libraries, Multi-threading</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: httpsssh</h3>
<p>A tunnel for SSH over HTTPS to keep your SSH server hidden in public, enhancing security by disguising SSH traffic as HTTPS.</p>
<p><strong>Technologies:</strong> Network protocols, SSH, HTTPS</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: isspam</h3>
<p>A spam evaluator with support for multiple files and standard input, designed to detect and filter spam content.</p>
<p><strong>Technologies:</strong> Rust, Text analysis, Spam detection algorithms</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: rvimtutor</h3>
<p>An application for training your Vim skills with over 60 shortcuts, helping users improve their text editing efficiency.</p>
<p><strong>Technologies:</strong> Python, Vim scripting</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: devranta</h3>
<p>An asynchronous Python client for the devRant developer community, enabling interaction with the devRant API.</p>
<p><strong>Technologies:</strong> Python, Asyncio, devRant API</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: deretoor</h3>
<p>A DevRant bot that corrects English of a given user by updating recent posts, utilizing the rbabel service for corrections.</p>
<p><strong>Technologies:</strong> Python, devRant API, Natural Language Processing</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: rbabel</h3>
<p>An English text corrector that standardizes text by capitalizing 'I', converting digits to words, and adding necessary punctuation.</p>
<p><strong>Technologies:</strong> Python, Text processing, Natural Language Processing</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: l33t</h3>
<p>A service that allows users to certify themselves as a 1337 hacker, system administrator, or programmer by completing various tasks in their preferred way.</p>
<p><strong>Technologies:</strong> C, System programming, Task automation</p>
</div>
</div>
</div>
<div class="eight wide center column">
<div class="center">
<div class="hero">
<h3>Project: pdf2text</h3>
<p>A fast PDF to text converter designed for machine learning applications, capable of processing entire directories of PDFs simultaneously.</p>
<p><strong>Technologies:</strong> Python, PDF processing libraries, Machine Learning</p>
</div>
</div>
</div>
</div> </div>

View File

@ -1,7 +1,9 @@
{{template "base/head" .}} {{template "base/head" .}}
<div role="main" aria-label="{{.Title}}" class="page-content repository file list {{if .IsBlame}}blame{{end}}"> <div role="main" aria-label="{{.Title}}" class="page-content repository file list {{if .IsBlame}}blame{{end}}">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container {{if .IsBlame}}fluid padded{{end}}"> <div class="ui container {{if .IsBlame}}fluid padded{{end}}">
{{template "base/alert" .}} {{template "base/alert" .}}
@ -68,7 +70,8 @@
{{ end }} {{ end }}
{{$isHomepage := (eq $n 0)}} {{$isHomepage := (eq $n 0)}}
<div class="repo-button-row" data-is-homepage="{{$isHomepage}}">
<div style="{{ if not .IsSigned }}display:none;{{ end }}" class="repo-button-row" data-is-homepage="{{$isHomepage}}">
<div class="repo-button-row-left"> <div class="repo-button-row-left">
{{template "repo/branch_dropdown" dict "root" . "ContainerClasses" "tw-mr-1"}} {{template "repo/branch_dropdown" dict "root" . "ContainerClasses" "tw-mr-1"}}
{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}} {{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}}

View File

@ -12,7 +12,7 @@
</div> </div>
{{end}} {{end}}
{{if not .ReadmeInList}} {{if and (not .ReadmeInList) (.IsSigned) }}
<div id="repo-file-commit-box" class="ui segment list-header tw-mb-4 tw-flex tw-justify-between"> <div id="repo-file-commit-box" class="ui segment list-header tw-mb-4 tw-flex tw-justify-between">
<div class="latest-commit"> <div class="latest-commit">
{{template "repo/latest_commit" .}} {{template "repo/latest_commit" .}}
@ -40,14 +40,14 @@
{{end}} {{end}}
</div> </div>
{{ end }} {{ end }}
<div class="file-header-right file-actions tw-flex tw-items-center tw-flex-wrap"> <div style="{{ if (not .IsSigned) }}display:none !important;{{end}}" class="file-header-right file-actions tw-flex tw-items-center tw-flex-wrap">
{{if .HasSourceRenderedToggle}} {{if .HasSourceRenderedToggle}}
<div class="ui compact icon buttons"> <div class="ui compact icon buttons">
<a href="?display=source" class="ui mini basic button {{if .IsDisplayingSource}}active{{end}}" data-tooltip-content="{{ctx.Locale.Tr "repo.file_view_source"}}">{{svg "octicon-code" 15}}</a> <a href="?display=source" class="ui mini basic button {{if .IsDisplayingSource}}active{{end}}" data-tooltip-content="{{ctx.Locale.Tr "repo.file_view_source"}}">{{svg "octicon-code" 15}}</a>
<a href="{{$.Link}}" class="ui mini basic button {{if .IsDisplayingRendered}}active{{end}}" data-tooltip-content="{{ctx.Locale.Tr "repo.file_view_rendered"}}">{{svg "octicon-file" 15}}</a> <a href="{{$.Link}}" class="ui mini basic button {{if .IsDisplayingRendered}}active{{end}}" data-tooltip-content="{{ctx.Locale.Tr "repo.file_view_rendered"}}">{{svg "octicon-file" 15}}</a>
</div> </div>
{{end}} {{end}}
{{if and (not .ReadmeInList) (not .IsSigned )}} {{if and (not .ReadmeInList) (.IsSigned )}}
<div class="ui buttons tw-mr-1"> <div class="ui buttons tw-mr-1">
<a class="ui mini basic button" href="{{$.RawFileLink}}">{{ctx.Locale.Tr "repo.file_raw"}}</a> <a class="ui mini basic button" href="{{$.RawFileLink}}">{{ctx.Locale.Tr "repo.file_raw"}}</a>
{{if not .IsViewCommit}} {{if not .IsViewCommit}}

View File

@ -1,9 +1,12 @@
{{if and (not .IsSigned) .ReadmeExist (or .IsMarkup .IsPlainText)}} {{if and (not .IsSigned) .ReadmeExist (or .IsMarkup .IsPlainText)}}
{{template "repo/view_file" .}} {{template "repo/view_file" .}}
{{end}} {{end}}
<table id="repo-files-table" class="ui single line table tw-mt-0" {{if .HasFilesWithoutLatestCommit}}hx-indicator="tr.notready td.message span" hx-trigger="load" hx-swap="morph" hx-post="{{.LastCommitLoaderURL}}"{{end}}> <table id="repo-files-table" class="{{ if .IsSigned}}ui {{end}}single line table tw-mt-0" {{if .HasFilesWithoutLatestCommit}}hx-indicator="tr.notready td.message span" hx-trigger="load" hx-swap="morph" hx-post="{{.LastCommitLoaderURL}}"{{end}}>
{{ if .IsSigned }}
<thead> <thead>
<tr class="commit-list"> <tr class="commit-list">
<th class="tw-overflow-hidden" colspan="2"> <th class="tw-overflow-hidden" colspan="2">
<div class="tw-flex"> <div class="tw-flex">
<div class="latest-commit"> <div class="latest-commit">
@ -11,9 +14,11 @@
</div> </div>
</div> </div>
</th> </th>
<th class="text grey right age">{{if .LatestCommit}}{{if .LatestCommit.Committer}}{{TimeSince .LatestCommit.Committer.When ctx.Locale}}{{end}}{{end}}</th>
<th style="min-width:100px;" class="text grey right age">{{if .LatestCommit}}{{if .LatestCommit.Committer}}{{TimeSince .LatestCommit.Committer.When ctx.Locale}}{{end}}{{end}}</th>
</tr> </tr>
</thead> </thead>
{{ end }}
<tbody> <tbody>
{{if .HasParentPath}} {{if .HasParentPath}}
<tr class="has-parent"> <tr class="has-parent">
@ -56,17 +61,22 @@
{{end}} {{end}}
</span> </span>
</td> </td>
<td class="message nine wide">
<td class="message nine wide">
<span class="truncate"> <span class="truncate">
{{if $commit}}
{{ if $.IsSigned }}
{{if $commit}}
{{$commitLink := printf "%s/commit/%s" $.RepoLink (PathEscape $commit.ID.String)}} {{$commitLink := printf "%s/commit/%s" $.RepoLink (PathEscape $commit.ID.String)}}
{{RenderCommitMessageLinkSubject $.Context $commit.Message $commitLink ($.Repository.ComposeMetas ctx)}} {{RenderCommitMessageLinkSubject $.Context $commit.Message $commitLink ($.Repository.ComposeMetas ctx)}}
{{else}} {{else}}
<div class="ui active tiny slow centered inline"></div> <div class="ui active tiny slow centered inline"></div>
{{end}} {{end}}
{{ end }}
</span> </span>
</td> </td>
<td class="text right age three wide">{{if $commit}}{{TimeSince $commit.Committer.When ctx.Locale}}{{end}}</td>
<td style="min-width:100px;" class="text right age three wide">{{if and $.IsSigned $commit}}{{TimeSince $commit.Committer.When ctx.Locale}}{{end}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>