aboutsummaryrefslogtreecommitdiffstats
"""
This file provides variables with HTML. It is automatically generated by running bash gen_html.sh.
Do not edit directly.


"""
mailpage="""
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>{subject} - {project} bug tracker</title>
		<link href="/style" rel="stylesheet">
	</head>
	<body>
		<nav class="formattedheader">
			<span class="left">
				<a href="/{project}/">{project}</a>/<a href="/{project}/{bug}">{bug}</a>/{pagenr}
				{jumptos}
			</span>
			<span class="right">
				bugtype: {bugtype} | status: <span id="status" class="status-{status}">{status}</span>
			</span>
		</nav>
		<h1 class="subject">
			<span class="bugnr">#{bug}</span> {subject}
		</h1>

		<article class="main">
			<p>
			<a href="mailto:{emailaddr}">Click to comment via email</a> or <a href="mailto:{subscribe}">subscribe</a>
			</p>
			<p class="center-text">{pageswitcher}</p>
			{content}
		</article>
		<p class="center-text">{pageswitcher}</p>

	</body>
</html>
"""
notfound="""
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<link href="css/style.css" rel="stylesheet">
	</head>
	<body>
		<h1>Not found</h1>
		<p>Not found: {path}</p>
	
	</body>
</html>
"""
projectpage="""
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>{project} bug tracker</title>
		<link href="/style" rel="stylesheet">
	</head>
	<body>
		<div id="skiptocontent">
			<a href="#searchbar-target">Skip to search</a>
			<a href="#results-target">Skip to issue listing</a>
		</div>

		<nav class="formattedheader">
			<span class="left">
				<a href="/{project}/">{project}</a>
			</span>
		</nav>
		<h1 class="trackerpage-header">
			{project}
		</h1>

		<article class="usage">
			Welcome to the {project} bug tracker! To submit an issue,
			<a href="mailto:{emailaddr}">send an email containing your bug to {emailaddr}</a>.<br>
			To submit a patch, send your email using <code><a href="https://git-send-email.io">git send-email</a></code>.<br>
			Or <a href="mailto:{emailaddr}?subject=%5BDISCUSSION%5D%20%3Creplace%20me%3E">start a discussion</a>.<br>
			Also, if you want to receive emails for new items, <a href="mailto:{emailaddr}?subject=SUBSCRIBE">subscribe!</a>.
		</article>

		<div class="projectpage">

			<div id="left">
				<article id="readme">
					{readme}
				</article>

				<article id="stats">
					<h3>Tracker stats:</h3>
					<table>
						<tr>
							<td>Mail today:</td><td>{mailtoday}</td>
						</tr>
						<tr>
							<td>Total mail:</td><td>{mailtotal}</td>
						</tr>
						<tr>
							<td>Bugs:</td><td>{bugstotal}</td>
						</tr>
						<tr>
							<td>| open:</td><td>{bugsopen}</td>
						</tr>
						<tr>
							<td>| closed:</td><td>{bugsclosed}</td>
						</tr>
						<tr>
							<td>Patches:</td><td>{patchestotal}</td>
						</tr>
						<tr>
							<td>| open:</td><td>{patchesopen}</td>
						</tr>
						<tr>
							<td>| closed:</td><td>{patchesclosed}</td>
						</tr>
						<tr>
							<td>| rejected:</td><td>{patchesrejected}</td>
						</tr>
					</table>					
				</article>

			</div>

			<div id="right">
				<form id="bugsearch">
					<div id="searchbar">
						<input type="text" name="subject" value="{filter_subject}" placeholder="<filter by subject>" id="searchbar-target">
						<input type="submit" value="Find!">
					</div>
					<div class="split5050">
						Type:<br>
						<input type="checkbox" name="bug" {filter_bug} id="bug"><label for="bug">bugs</label>
						<input type="checkbox" name="patch" {filter_patch} id="patch"><label for="patch">patches</label>
						<input type="checkbox" name="discus" {filter_discus} id="discus"><label for="discus">discussions</label>
					</div>
					<div class="split5050">
						Status:<br>
						<input type="checkbox" name="open" {filter_open} id="open"><label for="open">open</label>
						<input type="checkbox" name="closed" {filter_closed} id="closed"><label for="closed">closed</label>
						<input type="checkbox" name="reject" {filter_reject} id="reject"><label for="reject">rejected</label>
						<br>
						<input type="checkbox" name="upstrm" {filter_upstrm} id="upstrm"><label for="upstrm">upstream</label>
						<input type="checkbox" name="unconf" {filter_unconf} id="unconf"><label for="unconf">unconfirmed</label>
					</div>
				</form>
				<article>
					<table id="results">
						<tr> <th id="results-target">#</th> <th>Subject</th> <th>Status</th> <th>Type</th></tr>
						{maillist}
					</table>
				</article>
			</div>

		</div>

	</body>
</html>
"""
style_css="""

:root {
	font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
	font-size: 1.0em;

	--colour: #000000;
	--primary-background: #fafafa;
	--secondary-background: #dadada;
	--tertiary-background: #bbbbbb;

	--background-inverted: #101010;
	--colour-inverted: #cacaca;

	--link-colour: #3344dd;
	--link-colour-secondary: #202FBC; /* link colours for on secondary bg */

	--accent: #ff8100;
}

@media (prefers-color-scheme: dark) {
	:root {
		--colour: #fafafa;
		--primary-background: #202020;
		--secondary-background: #404040;
		--tertiary-background: #5f5f5f;

		--link-colour: #2491FF;
		--link-colour-secondary: #61B0FF;
	}
}

:root {
	background-color: var(--primary-background);
	color: var(--colour);
}

a, a:visited {
	color: var(--link-colour);
}

h1, h2 {
	color: var(--accent);
	margin-left: 1em;
}
h1 {
	font-size: 1.5em;
	border-bottom: 1px solid var(--tertiary-background);
}

.formattedheader {
	background-color: var(--tertiary-background);
	padding-left: 10px;
	padding-right: 10px;
	font-family: monospace;
	font-size: 1.2em;
	padding: 2px;
	.right {
		float: right;
	}

	position: sticky;
	top: 0;

	--link-colour: var(--link-colour-secondary);
}

.status-OPEN {
	background-color: #00ff00;
	color: #000;
}
.status-CLOSED {
	background-color: #303030;
	color: #fafafa;
}
.status-UNCONF {
	background-color: #ff8100;
}
.status-REJECT {
	background-color: #ff0000;
}
.status-UPSTRM {
	background-color: #ac00fd;
}

.email {
	font-family: monospace;
	font-size: 1.2em;
	background-color: var(--secondary-background);
	--link-colour: var(--link-colour-secondary);
	padding: 1px;
	padding-left: 2em;
	padding-right: 2em;
}
.highlight {
	overflow-y: scroll;
	white-space: nowrap;
}
.emailheader {
	margin-top: 15px;
	border-top: 2px solid var(--tertiary-background);
	padding-top: 5px;
}

.bugdesc {
	padding: 5px;
	border: 2px solid var(--accent);
}

.bugnr {
	color: var(--accent);
}

.usage {
	padding: 1em;
	background-color: var(--secondary-background);
	--link-colour: var(--link-colour-secondary);
}

.projectpage {
	#left, #right {
		float: left;
		margin: 1.5%;
		box-sizing: border-box;
	}
	#left {
		width: 27%;

		#readme, #stats {
			padding: 2em;
			background-color: var(--secondary-background);
			--link-colour: var(--link-colour-secondary);
			margin-bottom: 5em;
		}
		#stats {
			padding-top: 5px;
			table tr { 
				border-bottom: 3px solid var(--accent);
				td {
					padding-right: 1em;
				}
			}
		}

	}
	#right {
		width: 67%;
		table {
			margin-top: 1em;
			width: 100%;
			font-family: monospace;
			font-size: 1.3em;
			tr th {
				color: var(--accent);
			}
			tr #id {
				min-width: 3em;
			}
			tr #subject {
				width: 100%;
				a {
					display: inline-block;
					width: 100%;
				}
			}
			tr #status, tr #type {
				min-width: 4em;
			}
		}
		table tr:nth-child(2n) {
			background-color: var(--primary-background);
		}
		table tr:nth-child(2n+1) {
			background-color: var(--secondary-background);
			--link-colour: var(--link-colour-secondary);
		}
	}

	@media screen and (max-width: 859px) {
		#left, #right {
			width: unset;
			margin-left: auto;
			margin-right: auto;
			float: none;
		}
		#left {
			#readme, #stats {
				width: 48%;
				margin: 1%;
				box-sizing: border-box;
				margin-bottom: 2em;
			}
			#readme {
				float: left;
			}
			#stats {
				float: right;
			}
		}
	}
	@media screen and (max-width: 489px) {
		#left #readme, #left #stats {
			width: inherit;
			float: none;
			margin: inherit;
		}
		#right {
			margin-top: 1em;
		}
	}

	form {
		#searchbar {
			display: flex;
			width: 100%;

			input[type="text"] {
				flex-grow: 1;
				margin-right: 5px;
			}
		}
		.split5050 {
			float: left;
			margin-right: 15px;
		}
	}
}

.center-text {
	text-align: center;
}


.highlight {
	/* python3 -c "from pygments.formattters import HtmlFormatter; print(HtmlFormatter(style="monokai").get_style_defs())" */
	pre { line-height: 125%; }
	td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
	span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
	td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
	span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
	.hll { background-color: #49483e }
	.c { color: #959077 } /* Comment */
	.err { color: #ED007E; background-color: #1E0010 } /* Error */
	.esc { color: #F8F8F2 } /* Escape */
	.g { color: #F8F8F2 } /* Generic */
	.k { color: #66D9EF } /* Keyword */
	.l { color: #AE81FF } /* Literal */
	.n { color: #F8F8F2 } /* Name */
	.o { color: #FF4689 } /* Operator */
	.x { color: #F8F8F2 } /* Other */
	.p { color: #F8F8F2 } /* Punctuation */
	.ch { color: #959077 } /* Comment.Hashbang */
	.cm { color: #959077 } /* Comment.Multiline */
	.cp { color: #959077 } /* Comment.Preproc */
	.cpf { color: #959077 } /* Comment.PreprocFile */
	.c1 { color: #959077 } /* Comment.Single */
	.cs { color: #959077 } /* Comment.Special */
	.gd { color: #FF4689 } /* Generic.Deleted */
	.ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */
	.ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
	.gr { color: #F8F8F2 } /* Generic.Error */
	.gh { color: #F8F8F2 } /* Generic.Heading */
	.gi { color: #A6E22E } /* Generic.Inserted */
	.go { color: #66D9EF } /* Generic.Output */
	.gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */
	.gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */
	.gu { color: #959077 } /* Generic.Subheading */
	.gt { color: #F8F8F2 } /* Generic.Traceback */
	.kc { color: #66D9EF } /* Keyword.Constant */
	.kd { color: #66D9EF } /* Keyword.Declaration */
	.kn { color: #FF4689 } /* Keyword.Namespace */
	.kp { color: #66D9EF } /* Keyword.Pseudo */
	.kr { color: #66D9EF } /* Keyword.Reserved */
	.kt { color: #66D9EF } /* Keyword.Type */
	.ld { color: #E6DB74 } /* Literal.Date */
	.m { color: #AE81FF } /* Literal.Number */
	.s { color: #E6DB74 } /* Literal.String */
	.na { color: #A6E22E } /* Name.Attribute */
	.nb { color: #F8F8F2 } /* Name.Builtin */
	.nc { color: #A6E22E } /* Name.Class */
	.no { color: #66D9EF } /* Name.Constant */
	.nd { color: #A6E22E } /* Name.Decorator */
	.ni { color: #F8F8F2 } /* Name.Entity */
	.ne { color: #A6E22E } /* Name.Exception */
	.nf { color: #A6E22E } /* Name.Function */
	.nl { color: #F8F8F2 } /* Name.Label */
	.nn { color: #F8F8F2 } /* Name.Namespace */
	.nx { color: #A6E22E } /* Name.Other */
	.py { color: #F8F8F2 } /* Name.Property */
	.nt { color: #FF4689 } /* Name.Tag */
	.nv { color: #F8F8F2 } /* Name.Variable */
	.ow { color: #FF4689 } /* Operator.Word */
	.pm { color: #F8F8F2 } /* Punctuation.Marker */
	.w { color: #F8F8F2 } /* Text.Whitespace */
	.mb { color: #AE81FF } /* Literal.Number.Bin */
	.mf { color: #AE81FF } /* Literal.Number.Float */
	.mh { color: #AE81FF } /* Literal.Number.Hex */
	.mi { color: #AE81FF } /* Literal.Number.Integer */
	.mo { color: #AE81FF } /* Literal.Number.Oct */
	.sa { color: #E6DB74 } /* Literal.String.Affix */
	.sb { color: #E6DB74 } /* Literal.String.Backtick */
	.sc { color: #E6DB74 } /* Literal.String.Char */
	.dl { color: #E6DB74 } /* Literal.String.Delimiter */
	.sd { color: #E6DB74 } /* Literal.String.Doc */
	.s2 { color: #E6DB74 } /* Literal.String.Double */
	.se { color: #AE81FF } /* Literal.String.Escape */
	.sh { color: #E6DB74 } /* Literal.String.Heredoc */
	.si { color: #E6DB74 } /* Literal.String.Interpol */
	.sx { color: #E6DB74 } /* Literal.String.Other */
	.sr { color: #E6DB74 } /* Literal.String.Regex */
	.s1 { color: #E6DB74 } /* Literal.String.Single */
	.ss { color: #E6DB74 } /* Literal.String.Symbol */
	.bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */
	.fm { color: #A6E22E } /* Name.Function.Magic */
	.vc { color: #F8F8F2 } /* Name.Variable.Class */
	.vg { color: #F8F8F2 } /* Name.Variable.Global */
	.vi { color: #F8F8F2 } /* Name.Variable.Instance */
	.vm { color: #F8F8F2 } /* Name.Variable.Magic */
	.il { color: #AE81FF } /* Literal.Number.Integer.Long */
}



/* credits to webaim.org's css for the base */
#skiptocontent a {
	padding:6px;
	position: absolute;
	top:-40px;
	color: var(--background-inverted);
	border-right:1px solid white;
	border-bottom:1px solid white;
	background: var(--colour-inverted);
	-webkit-transition: top .5s ease-out;
    transition: top .5s ease-out;
    z-index: 100;
}

#skiptocontent a:focus {
	position:absolute;
	top:0px;
	outline-color:transparent;	
	-webkit-transition: top .05s ease-in;
    transition: top .05s ease-in;
}

@media (prefers-reduced-motion: reduce) {
	#skiptocontent a {
		transition-duration: 0.001ms !important;
	}
}

"""