Commit c238de3b authored by Carlo Landmeter's avatar Carlo Landmeter

Squashed commit of the following:

commit addaa409d4531d0747da889cab16ed0ad85c8494
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Thu Aug 20 08:54:37 2015 +0000

    make alert class dedicated

commit 0a9b01ec335f1b8f54da1e0803ed812cd8ce6115
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Wed Aug 19 22:12:51 2015 +0000

    use models for lustache templates

commit f67827ca801e3dce19b5b823517b029676cbb90a
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Thu Aug 13 20:58:31 2015 +0000

    fix flagged date

commit 35d61e2923dfce655d8476f0598e94e706076571
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Thu Aug 13 20:51:53 2015 +0000

    code reshuffle and small fixes

commit 8fbabe8c31f1033fd8f51c08d837b6388a0e9833
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Sun Aug 9 21:01:53 2015 +0000

    add mail notification support

commit b63c08c7064b9a3d5ef46e5fc66fac1bd45d0910
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Fri Aug 7 13:09:58 2015 +0000

    rename config

commit 95b48fef4acb6adb0fbdc8c4b3c4b9b12c06cde2
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Fri Aug 7 15:03:31 2015 +0200

    Update README.md

    add   to dependencies
    use turbovisor to start turbo (which will auto restart on db changes)

commit c7636464f658c69dc0ccb41c1967ac53708930a0
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Fri Aug 7 12:29:05 2015 +0000

    various new functions

    add recaptcha support
    add config support
    add RedirectAlert class

commit bd31c765827a6f2caf722bb1b23998a00e100f36
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Tue Aug 4 18:44:33 2015 +0000

    small cleanup

commit a3b890477ef13a05ed283ee40916cda5181e3322
Author: Carlo Landmeter <clandmeter@gmail.com>
Date:   Tue Aug 4 16:26:59 2015 +0000

    initial flag functionality
parent a1ee6813
......@@ -5,10 +5,12 @@ This application makes use of the Turbo (Lua) framework. You can find more infor
On Alpine Linux it should be enough to install turbo by:
apk add lua-turbo
apk add lua-turbo lua-dbi-sqlite
set config options in conf.lua
and execute:
luajit aports.lua
turbovisor aports.lua --ignore ./db/persistent
A webserver should be listening on port number 8888.
A webserver should be listening on configured port.
This diff is collapsed.
local conf = {}
-- global configuration
conf.port = 8888
-- template location
conf.tpl = "./tpl"
-- google recaptcha settings
conf.rc = {}
-- set sitekey to false to disable recaptcha
conf.rc.sitekey = false
conf.rc.secret = ""
-- mailer settings
conf.mail = {}
-- from email address
conf.mail.from = "me@example.org"
conf.mail.server = "mail.example.org"
conf.mail.domain = "pkgs.example.org"
-- settings for pagers
conf.pager = {}
-- how many entries in page
conf.pager.limit = 50
-- the left and right offset of the pager
conf.pager.offset = 3
return conf
......@@ -6,22 +6,30 @@
<form class="form-inline" role="form" id="search">
<div class="form-group">
<label for="filename">File</label>
<input type="text" class="form-control" id="filename" name="filename" value="{{{filename}}}" placeholder="use % as wildcard">
<input type="text" class="form-control" id="filename" name="filename" value="{{{form.filename}}}" placeholder="use % as wildcard">
</div>
<div class="form-group">
<label for="path">Path</label>
<input type="text" class="form-control" id="path" name="path" value="{{{path}}}" placeholder="use % as wildcard">
<input type="text" class="form-control" id="path" name="path" value="{{{form.path}}}" placeholder="use % as wildcard">
</div>
<div class="form-group">
<label for="pkgname">Package</label>
<input type="text" class="form-control" id="pkgname" name="pkgname" value="{{{pkgname}}}" placeholder="use % as wildcard">
<label for="package">Package</label>
<input type="text" class="form-control" id="pkgname" name="pkgname" value="{{{form.name}}}" placeholder="use % as wildcard">
</div>
<div class="form-group">
<label for="arch">Architecture</label>
<label for="repo">Repo</label>
<select name="repo" class="form-control" id="repo">
{{#form.repo}}
<option {{{selected}}} >{{{text}}}</option>
{{/form.repo}}
</select>
</div>
<div class="form-group">
<label for="arch">Arch</label>
<select name="arch" class="form-control" id="arch">
<option{{#x86}} selected {{/x86}}>x86</option>
<option{{#x86_64}} selected {{/x86_64}}>x86_64</option>
<option{{#armhf}} selected {{/armhf}}>armhf</option>
{{#form.arch}}
<option {{{selected}}} >{{{text}}}</option>
{{/form.arch}}
</select>
</div>
<button type="submit" class="btn btn-primary">Search</button>
......@@ -34,30 +42,30 @@
<th>Package name</th>
<th>Repository</th>
<th>Architecture</th>
</tr>{{#rows}}
</tr>
{{#contents}}
<tr>
<td>{{{file}}}</td>
<td><a href="/package/{{{repo}}}/{{{arch}}}/{{{pkgname}}}">{{{pkgname}}}</a></td>
<td><a href="{{{pkgname.patch}}}">{{{pkgname.text}}}</a></td>
<td>{{{repo}}}</td>
<td>{{{arch}}}</td>
</tr>{{/rows}}
{{{^rows}}}
</tr>
{{/contents}}
{{^contents}}
<tr>
<td colspan="4">No item found...</td>
</tr>
{{{/rows}}}
{{/contents}}
</table>
</div>
<div class="panel-footer text-center">{{#pager}}
<div class="panel-footer text-center">
<nav>
<ul class="pagination">{{/pager}}{{#pager}}{{#prev}}
<li class=""><a href="/contents?{{{prev}}}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>{{/prev}}{{/pager}}{{#pager}}{{^prev}}
<li class="disabled"><a href="" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>{{/prev}}{{/pager}}{{#pager}}
<li class="active"><a href="#">{{{page}}}</a></li>{{/pager}}{{#pager}}{{#next}}
<li><a href="/contents?{{{next}}}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>{{/next}}{{/pager}}{{#pager}}{{^next}}
<li class="disabled"><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>{{/next}}{{/pager}}{{#pager}}
<ul class="pagination">
{{#pager}}
<li class="{{{class}}}"><a href="/contents?{{{args}}}">{{{page}}}</a></li>
{{/pager}}
</ul>
</nav>{{/pager}}
</nav>
</div>
</div>
</div>
......
{{{header}}}
<div id="main">
<div class="panel panel-default">
<div class="panel-heading">Search the contents of packages</div>
<div class="panel-body">
<form class="form-inline" role="form" id="search">
<div class="form-group">
<label for="filename">File</label>
<input type="text" class="form-control" id="filename" name="filename" value="{{{filename}}}" placeholder="use % as wildcard">
</div>
<div class="form-group">
<label for="path">Path</label>
<input type="text" class="form-control" id="path" name="path" value="{{{path}}}" placeholder="use % as wildcard">
</div>
<div class="form-group">
<label for="pkgname">Package</label>
<input type="text" class="form-control" id="pkgname" name="pkgname" value="{{{pkgname}}}" placeholder="use % as wildcard">
</div>
<div class="form-group">
<label for="arch">Architecture</label>
<select name="arch" class="form-control" id="arch">
<option{{#x86}} selected {{/x86}}>x86</option>
<option{{#x86_64}} selected {{/x86_64}}>x86_64</option>
<option{{#armhf}} selected {{/armhf}}>armhf</option>
</select>
</div>
<button type="submit" class="btn btn-primary">Search</button>
</form>
</div>
<div class="table-responsive">
<table class="table table-striped table-bordered table-condensed" data-toggle="table">
<tr>
<th>File</th>
<th>Package name</th>
<th>Repository</th>
<th>Architecture</th>
</tr>{{#rows}}
<tr>
<td>{{{file}}}</td>
<td><a href="/package/{{{repo}}}/{{{arch}}}/{{{pkgname}}}">{{{pkgname}}}</a></td>
<td>{{{repo}}}</td>
<td>{{{arch}}}</td>
</tr>{{/rows}}
{{{^rows}}}
<tr>
<td colspan="4">No item found...</td>
</tr>
{{{/rows}}}
</table>
</div>
<div class="panel-footer text-center">{{#pager}}
<nav>
<ul class="pagination">{{/pager}}{{#pager}}{{#prev}}
<li class=""><a href="/contents?{{{prev}}}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>{{/prev}}{{/pager}}{{#pager}}{{^prev}}
<li class="disabled"><a href="" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>{{/prev}}{{/pager}}{{#pager}}
<li class="active"><a href="#">{{{page}}}</a></li>{{/pager}}{{#pager}}{{#next}}
<li><a href="/contents?{{{next}}}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>{{/next}}{{/pager}}{{#pager}}{{^next}}
<li class="disabled"><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>{{/next}}{{/pager}}{{#pager}}
</ul>
</nav>{{/pager}}
</div>
</div>
</div>
{{{footer}}}
{{{header}}}
<div id="main">
<div class="panel panel-default">
<div class="panel-heading">Flag a package out of date</div>
<div class="panel-body">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Your information</div>
<div class="panel-body">
<form role="form" method="POST">
<div class="form-group">
<label class="control-label" for="exampleInputEmail1">Email</label>
<input type="from" name="from" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
<p class="help-block">Your email address the developer can contact you on.</p>
</div>
<div class="form-group">
<label for="comment">Message</label>
<textarea class="form-control" rows="5" name="message"></textarea>
<p class="help-block">Leave a message to the developer.</p>{{{#sitekey}}}
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="{{{sitekey}}}"></div>{{{/sitekey}}}
</div>
<button type="submit" class="btn btn-primary">Flag it!</button>
</form>
</div>
</div>
</div>
<div class="col-md-5 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">Package</div>
<div class="panel-body">
<table class="table table-striped table-bordered table-condensed">
<tbody>
<tr><th>Origin name</th><td>{{{origin}}}</td></tr>
<tr><th>Repository</th><td>{{{repo}}}</td></tr>
<tr><th>Version</th><td>{{{version}}}</td></tr>
<tr><th>Maintainer</th><td>{{{maintainer}}}</td></tr>
</tbody>
</table>
<div class="alert alert-warning" role="alert">Flagging a package out of date, will always select the orgin package. This means if you have selected another package to flag this is most probably a subpackage of ({{{origin}}})</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{{footer}}}
......@@ -25,8 +25,8 @@
<a href="/"><img id="logo" src="/assets/alpinelinux-logo.svg" alt="Alpine Linux logo" /></a>
<div id="pagenav">
<nav>
<a href="/packages" {{#packages}}class="active"{{/packages}} >Packages</a>
<a href="/contents" {{#contents}}class="active"{{/contents}} >Contents</a>
<a href="/packages" class="{{nav.package}}" >Packages</a>
<a href="/contents" class="{{nav.content}}" >Contents</a>
</nav>
</div>
<div id="sitenav">
......@@ -37,4 +37,8 @@
<a href="http://forum.alpinelinux.org/forum">forums</a>
</nav>
</div>
</header>
</header>{{#alert}}
<div class="alert alert-{{{type}}} alert-dismissible" role="alert" style="margin-top: 20px;">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
{{{msg}}}
</div>{{/alert}}
Dear {{{maintainer}}}
This is an automatic message send from pkgs.alpinelinux.org
You are receiving this message because you are the maintainer of aport:
{{{origin}}}
The following message is send by: {{{from}}}
{{{message}}}
......@@ -10,103 +10,57 @@
<div class="panel-heading">General</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-bordered table-condensed">{{#name}}
<tr>
<th>Name:</th>
<td>{{{name}}}</td>
</tr>
<tr>
<th>Version:</th>
<td>{{{version}}}</td>
</tr>
<tr>
<th>Description:</th>
<td>{{{desc}}}</td>
</tr>
<tr>
<th>Project:</th>
<td><a href="{{{url}}}">{{{url}}}</a></td>
</tr>
<tr>
<th>Licence:</th>
<td>{{{lic}}}</td>
</tr>
<tr>
<th>Repository:</th>
<td>{{{repo}}}</td>
</tr>
<tr>
<th>Architecture:</th>
<td>{{{arch}}}</td>
<table class="table table-striped table-bordered table-condensed">
{{#pkg}}
<tr>
<th>{{{head}}}</th>
{{#url}}
<td><a href="{{{path}}}">{{{text}}}</a></td>
{{/url}}
{{^url}}
<td>{{{data}}}</td>
{{/url}}
</tr>
<tr>
<th>Size:</th>
<td>{{{size}}}</td>
</tr>{{#install_size}}
<tr>
<th>Installed size:</th>
<td>{{{install_size}}}</td>
</tr>{{/install_size}}{{#install_if}}
<tr>
<th>Install if:</th>
<td><a href="/package/{{{repo}}}/{{{arch}}}/{{{install_if}}}">{{{install_if}}}</a></td>
</tr>{{/install_if}}{{#name}}
<tr>
<th>Origin:</th>
<td><a href="/package/{{{repo}}}/{{{arch}}}/{{{origin}}}">{{{origin}}}</a></td>
</tr>
<tr>
<th>Maintainer:</th>
<td>{{{maintainer}}}</td>
</tr>
<tr>
<th>Build time:</th>
<td>{{{build_time}}}</td>
</tr>
<tr>
<th>Commit:</th>
<td><a href="http://git.alpinelinux.org/cgit/aports/commit/?id={{{commit}}}">{{{commit}}}</a></td>
</tr>
<tr>
<th>Contents:</th>
<td><a href="/contents?pkgname={{{name}}}&amp;arch={{{arch}}}">Contents of package</a></td>
</tr>{{/name}}{{^name}}
<tr>
<td>This package does not exist!</td>
</tr>{{/name}}
{{/pkg}}
</table>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-md-offset-1">
<!-- Dependencies -->
<div class="panel panel-default">
<div class="panel-heading">
<a class="accordion-toggle" data-toggle="collapse" href="#collapseDeps" aria-expanded="false">Dependecies ({{deps_qty}})</a>
</div>
<div id="collapseDeps" class="panel-collapse collapse">
<ul class="list-group">{{#deps}}
<li class="list-group-item"><a href="/package/{{{repo}}}/{{{arch}}}/{{{dep}}}">{{{dep}}}</a></li>{{/deps}}{{^deps}}<li class="list-group-item">None</li>{{/deps}}
<ul class="list-group">
{{#deps}}<li class="list-group-item"><a href="{{{path}}}">{{{text}}}</a></li>{{/deps}}
{{^deps}}<li class="list-group-item">None</li>{{/deps}}
</ul>
</div>
</div>
<!-- Required by -->
<div class="panel panel-default">
<div class="panel-heading">
<a class="accordion-toggle" data-toggle="collapse" href="#collapseReqBy" aria-expanded="false">Required by ({{reqbys_qty}})</a>
</div>
<div id="collapseReqBy" class="panel-collapse collapse">
<ul class="list-group">{{#reqbys}}
<li class="list-group-item"><a href="/package/{{{repo}}}/{{{arch}}}/{{{name}}}">{{{name}}}</a></li>{{/reqbys}}{{^reqbys}}<li class="list-group-item">None</li>{{/reqbys}}
<ul class="list-group">
{{#reqbys}}<li class="list-group-item"><a href="{{{path}}}">{{{text}}}</a></li>{{/reqbys}}
{{^reqbys}}<li class="list-group-item">None</li>{{/reqbys}}
</ul>
</div>
</div>
<!-- Subpackages -->
<div class="panel panel-default">
<div class="panel-heading">
<a class="accordion-toggle" data-toggle="collapse" href="#collapseSubPkg" aria-expanded="false">Sub Packages ({{subpkgs_qty}})</a>
</div>
<div id="collapseSubPkg" class="panel-collapse collapse">
<ul class="list-group">{{#subpkgs}}
<li class="list-group-item"><a href="/package/{{{repo}}}/{{{arch}}}/{{{subpkg}}}">{{{subpkg}}}</a></li>{{/subpkgs}}{{^subpkgs}}<li class="list-group-item">None</li>{{/subpkgs}}
<ul class="list-group">
{{#subpkgs}}<li class="list-group-item"><a href="{{{path}}}">{{{text}}}</a></li>{{/subpkgs}}
{{^subpkgs}}<li class="list-group-item">None</li>{{/subpkgs}}
</ul>
</div>
</div>
......
{{{header}}}
<div id="main">
<div class="panel panel-default">
<div class="panel-heading">Package details</div>
<div class="panel-body">
<div class="container-fluid">
<div class="row">
<div class="col-md-8">
<div class="panel panel-default">
<div class="panel-heading">General</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-bordered table-condensed">{{#name}}
<tr>
<th>Name:</th>
<td>{{{name}}}</td>
</tr>
<tr>
<th>Version:</th>
<td>{{{version}}}</td>
</tr>
<tr>
<th>Description:</th>
<td>{{{desc}}}</td>
</tr>
<tr>
<th>Project:</th>
<td><a href="{{{url}}}">{{{url}}}</a></td>
</tr>
<tr>
<th>Licence:</th>
<td>{{{lic}}}</td>
</tr>
<tr>
<th>Repository:</th>
<td>{{{repo}}}</td>
</tr>
<tr>
<th>Architecture:</th>
<td>{{{arch}}}</td>
</tr>
<tr>
<th>Size:</th>
<td>{{{size}}}</td>
</tr>{{/name}}{{#install_size}}
<tr>
<th>Installed size:</th>
<td>{{{install_size}}}</td>
</tr>{{/install_size}}{{#install_if}}
<tr>
<th>Install if:</th>
<td><a href="/package/{{{repo}}}/{{{arch}}}/{{{install_if}}}">{{{install_if}}}</a></td>
</tr>{{/install_if}}{{#name}}
<tr>
<th>Origin:</th>
<td><a href="/package/{{{repo}}}/{{{arch}}}/{{{origin}}}">{{{origin}}}</a></td>
</tr>
<tr>
<th>Maintainer:</th>
<td>{{{maintainer}}}</td>
</tr>
<tr>
<th>Build time:</th>
<td>{{{build_time}}}</td>
</tr>
<tr>
<th>Commit:</th>
<td><a href="http://git.alpinelinux.org/cgit/aports/commit/?id={{{commit}}}">{{{commit}}}</a></td>
</tr>
<tr>
<th>Contents:</th>
<td><a href="/contents?pkgname={{{name}}}&amp;arch={{{arch}}}">Contents of package</a></td>
</tr>{{/name}}{{^name}}
<tr>
<td>This package does not exist!</td>
</tr>{{/name}}
</table>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">
<a class="accordion-toggle" data-toggle="collapse" href="#collapseDeps" aria-expanded="false">Dependecies ({{deps_qty}})</a>
</div>
<div id="collapseDeps" class="panel-collapse collapse">
<ul class="list-group">{{#deps}}
<li class="list-group-item"><a href="/package/{{{repo}}}/{{{arch}}}/{{{dep}}}">{{{dep}}}</a></li>{{/deps}}{{^deps}}<li class="list-group-item">None</li>{{/deps}}
</ul>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<a class="accordion-toggle" data-toggle="collapse" href="#collapseReqBy" aria-expanded="false">Required by ({{reqbys_qty}})</a>
</div>
<div id="collapseReqBy" class="panel-collapse collapse">
<ul class="list-group">{{#reqbys}}
<li class="list-group-item"><a href="/package/{{{repo}}}/{{{arch}}}/{{{name}}}">{{{name}}}</a></li>{{/reqbys}}{{^reqbys}}<li class="list-group-item">None</li>{{/reqbys}}
</ul>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<a class="accordion-toggle" data-toggle="collapse" href="#collapseSubPkg" aria-expanded="false">Sub Packages ({{subpkgs_qty}})</a>
</div>
<div id="collapseSubPkg" class="panel-collapse collapse">
<ul class="list-group">{{#subpkgs}}
<li class="list-group-item"><a href="/package/{{{repo}}}/{{{arch}}}/{{{subpkg}}}">{{{subpkg}}}</a></li>{{/subpkgs}}{{^subpkgs}}<li class="list-group-item">None</li>{{/subpkgs}}
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{{footer}}}
{{{header}}}
<script>$(document).ready(function(){$('[data-toggle="tooltip"]').tooltip({container: 'html'});});</script>
<div id="main">
<div class="panel panel-default">
<div class="panel-heading">Search for packages</div>
......@@ -6,22 +7,22 @@
<form class="form-inline" role="form" id="search">
<div class="form-group">
<label for="package">Package name</label>
<input type="text" class="form-control" id="package" name="package" value="{{{package}}}" placeholder="use % as wildcard">
<input type="text" class="form-control" id="name" name="name" value="{{{form.name}}}" placeholder="use % as wildcard">
</div>
<div class="form-group">
<label for="repo">Repository</label>
<select name="repo" class="form-control" id="repo">
<option{{{#all}}} selected {{{/all}}}>all</option>
<option{{{#main}}} selected {{{/main}}}>main</option>
<option{{{#testing}}} selected {{{/testing}}}>testing</option>
{{#form.repo}}
<option {{{selected}}} >{{{text}}}</option>
{{/form.repo}}
</select>
</div>
<div class="form-group">
<label for="arch">Architecture</label>
<select name="arch" class="form-control" id="arch">
<option{{#x86}} selected {{/x86}}>x86</option>
<option{{#x86_64}} selected {{/x86_64}}>x86_64</option>
<option{{#armhf}} selected {{/armhf}}>armhf</option>
{{#form.arch}}
<option {{{selected}}} >{{{text}}}</option>
{{/form.arch}}
</select>
</div>
<button type="submit" class="btn btn-primary">Search</button>
......@@ -38,35 +39,50 @@
<th>Repository</th>
<th>Maintainer</th>
<th>Build date</th>
</tr>{{#rows}}
</tr>
{{#pkgs}}
<tr>
<td class="package" title="{{{desc}}}"><a href="/package/{{{repo}}}/{{{arch}}}/{{{package}}}">{{{package}}}</a></td>
<td class="version">{{{version}}}</td>
<td class="url"><a href="{{{project}}}">URL</a></td>
<td class="license">{{{license}}}</td>
<td class="package">
<a data-toggle="tooltip" title="{{{name.title}}}" href="{{{name.path}}}">{{{name.text}}}</a>
</td>
{{#flagged}}
<td class="version">
<strong>
<a class="text-danger" href="#" data-toggle="tooltip" title="Flagged: {{{flagged.date}}}">{{{version.text}}}</a>
</strong>
</td>
{{/flagged}}
{{^flagged}}
<td class="version">
<strong>
<a class="text-success" href="{{{version.path}}}" data-toggle="tooltip" title="{{{version.title}}}">{{{version.text}}}</a>
</strong>
</td>
{{/flagged}}
<td class="url"><a href="{{{url.path}}}">{{{url.text}}}</a></td>
<td class="license">{{{lic}}}</td>
<td class="arch">{{{arch}}}</td>
<td class="repo">{{{repo}}}</td>
<td class="maintainer">{{{maintainer}}}</td>
<td class="bdate">{{{bdate}}}</td>
</tr>{{/rows}}
{{{^rows}}}
<td class="bdate">{{{build_time}}}</td>
</tr>
{{/pkgs}}