OEPUOUNBNTHTFZVDXREGBQCKFRCWMVP2MDVK4OA47VK2DBKEWVYAC
VRDK2P3XKHNQLIIOTLWHTJXIYAYV7ZSAA2P4AUKGQAD3UTRLWJNAC
23QNCJF2MINQEAMVPD5KMI4GY2BEUMP57G7TG7HPIII2XZY4GZIAC
2RGAZCKYYYPTVBTQRLUY6PLOAKRVIXA2M3BMCHTXWUY3F7KOKXHAC
JLICHVE674VIYYLAKDWYO7RZ7YREVPDYR3DRRJ57DXR2OVHP34CQC
PUIJ66FVMETVDWZFJ4OFXHD3Q4BGDQNAHIJK4NRQ44Y7TOYHXEGQC
6VPKJTKNRNLESJOV66ZUJSGN6YNI3UDRBFE2FV35LD2OR64CQDPAC
JLVKTWLTT2KEQJ4VCUHWKKC5MZIX4O3Z2OOGCYEDNT5AJ3TFR3LAC
SMTMFEKEB3YQU3X7NUA5FZ7KEW2BVTLNV2SF3SJFZ5XLU57QGYFAC
BIZEPF2TVVOBPLUDU7BOUYRUXVQDGWI3IBAQKXRLNXPSCSK47BUQC
3JBUMW3ECBQ5OARJEWPD7U5LIAIVGVMZUB7VG3ZLEWA3AV5EXDKQC
LL36GPHADRAVU6XM5J2QXBSG5YXXETVTIA3EAINY67W7ECMKN6IQC
ULNQG7OXOB4IALHAAMKP4E6WTBDHRZDBMYL6M6MC3TUJBVFXRKZAC
7G5RWHB7MRELVG2X5VXQE2T2JROZQNUQPTUIIVOHUQIIXBZIDZOAC
IZWCANCVXLEUV3EGHYLAOOANLCZI3YC5WJTFUZT6JRTBDOWKVA4QC
63A26BM2AJI2N4MHB7B4TNJJYB7CYG5VSSWVKTYTTEH3XE2PJ2KAC
L7NUCXKSELV2XQBSETAN2KSXN5ONX3ESJDHZL6737LMK4KPGQANQC
XZJFZSCJFIKTKKZ6ZMR4RVZTGLN6M34I75PQIJ35ANWC3OV6U2XAC
FV2M6MOTAP4BJMEKU5XUDVEACWEJGEIRCCE2MRY3F6SF2SFOE3MQC
ZWCTAZGLJZQNTYWTC2XQUKMILJF6JGDL5IND6QNYWK4FIGMLRFXAC
HI6VU2PNPFLYN5MEQOOQ53UQAO4GOJMUYRO4NZJA7ENI777JRDHAC
67NFGL7DFEKIS7D7HC72XJ5CET6SE6AOE5F37XXFTBU6GZAZ64HQC
CEARA7OHINXEQLCVPJ3SP5NJLGMFYXH5UEPDZ5BQ57SBJXHLQESAC
ZI535LI6PJMKSOBJE33B3RRZ5S2JVTR3XPUDTSXJW6BZNTAHS3GQC
J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC
ZDF42B24QLJDMNGUA47MROKMM3HNJTBWYSTRAKIHTBMWOKVMOFJQC
3SQCOHZNX4XUQU3KW6DXP65EQ2KHYZN6LTKVSKBXPTY4J3FKU2JQC
2R7GHSA4NUXPRWRPVXYDYWFIVVJGSUWUI2IPJGFN6ILZIAZGXGCAC
JBUTIGW7Y5NVOPIGB3XXT74O6QG7HGRM6YQPE7JTFOFLUSSTXREAC
22JB5HNESA5OX5ABFISGCJCO6R7GF3AUTXDHGAT3PM7IDVIBKWWAC
LQNG45RTWXKVR3NGXI42LHG3PPUPVP3RAPSHMVSNG6TGB747ATCQC
TW5ZQX5ZT5EZP4ZQYB5Y53YC6VDOXC56ZDX5IFQIMO47OEGHR5ZAC
KAZWI5G4DN2WUW7L2KWZR3D3QQJON4ISQYP7CRLC5HAOPIDYQGRQC
XHK7IGYISKWLHOOM3ZQAVLSRUNS2SV43TTKRX4XLPZZJ4DP3RWYAC
CLJQCY2XHIDNNMFBJ5PK3GQEN6RFALEFKXBJRWZPEIKR4PR5ZQ5AC
67P45PY4GTWQXZRCMR734D5YYN2OERZM57NBB2CZXEULQT2GRFNAC
VCOSLZRPLRS3ITD2JIPKZPMTCEPHN4WEFKTE5TKH3RAZ7WJKMQ4AC
TCXFZZFNJAO6UBBRHJLBXHDPCCKTXIPVFJ3YCDIBS4W7ZJTAI4NAC
BHZXGT2HWAMFNVBUDG7VR5HNA2SUJBUSMWB7EHTECB4QJ5HVYANAC
WRIU3S5EO3RB3IM5PUDNHLOOMUPD5UKWNUL4YMAKD3C6O4KELJCAC
U4TD3AIQXBJFFUORTMIC4IHZTVBORRKL2TZ2FSP4G665ECZOEMNAC
IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC
JLDUSNUOOQNL63BOPXIWZOWFRQ5X35RWG33PJB3J3KMR6QR7TN7QC
ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC
X5OIC5FFAUJDDVTBXUEVTLXHMT4PI2HSLO6YK7NPJLZHHRQIL3KAC
SMCOU72FKTPFNCDXFJAILVUWFE4DY33CJJE4436H5POKENFFDFFAC
TMP2FRIWXSSLCWOODKHRCVVCF26O7IXGB5KERZNOL5P5L26SHKMQC
G6HJY2V4CSSZF6BPIMRMRAJYRKPLTCBUFTJWZWK3BSNT235CZQ6QC
75XUS62YF7OK4S45RCZ5OOASXEBIEDNDBYEEMOCBDHVXV4GA3NLQC
QL55ECJ6KMMBUOWQ6LKSOVN7L43CH4S6SPE2AQ3VX3KSGC32RP4AC
HUH62VDLCGY5OZWD6SZG7I2EUKDS5HCL4DKOLXDTFTVR3PHIMV6QC
AKAXJDMWEPMXMUY5R53AOVYAGSV42ZZ53URH7HAPUB5KZZV56TPAC
G5YSUSNZCQCKYKR267EZ63E3KIW42R2YZPY2CMIJPYAHPNW3KY3QC
TJPIS3UPRE4ZIPXGRO7B4KOPR7P6UDYWUKCNY6UHJQEQDXWS4XVAC
ELABMHJIZYVLS4JFM36XS4YS4UP32NPFCTUWX5XOKBL6S5FIB3UQC
RSEGBU6CIEDRNTL7R6Q7RF2IZGCN3HH6VTPGFBKD77LSHEUD6EKAC
YTSIRIMKV2EN6CMO6LFX5J3NBJJYWBJKYDU3Z53CGXCIWP3FYI2QC
BA46C5LNEQ57N52IJTCEXW4J74F33KKNYHYXE6ZJLQ5ARMCJPUHAC
QB3LWT7NPX4I44HRXBVRHSCBXW3AVA5EW3ICGJCT4TXDDRRRDWYAC
F2YSY4BKQD4Y5XSSIOHAZVH5OQOEYDZJDXCY2JHHFPNRSUIUULSAC
YJAHR4FUF7HYQXY4BAXJ6DSSFA4FQS6WCHO3XSYC6AVGD36WEU4AC
FKK2ZSTL6YIE5HYVRYIKFSXETHD2S6R32QGPAQPVGVW5FFQZBUSAC
HRAFVVOEGQJQS4XQNZSMNYN2SUZGKEGPSJUDZUBMI2IN32WFNQ4QC
UVMFS73TI6RARMAAGY2UVS5LCPZUKLQECXQQVER4F7S4BNUXQQ3AC
LP66DSH2TK3MGDWBBRPWZ6H2DCTT5LS7HU34NKNSNTFZYOMONNNAC
HJLYC7537T37E5AQ4Y4PYDBRLVIZVWYS4R7WPSLGO6SJPS6M6LMAC
GN3JXNQSF2TQARUPPZJQUP5P4WQRIELDSVQYTIUFJ5KJKO5HXXSQC
4JPNFWRBFCFER74NDL3XZXNQ25YQCPD7E4XKYKF7VCWIESE56G4AC
GCHNNFZPCYM3BPOCU5GASALJ6ONWMEVEEGVD7KKLTWC7YQKJ5KZAC
TQKGQ5R36VOLLJ3SR2WWIQ6VSN245N3QG4JHI2ZCP5T6RXN3PJWAC
JK2QWPH6EOQXGCADV7C5HSYRVWC5M53LAKVN26EMTLY65IKU3AEQC
S66BOMVUACAUDSGSDWP7ZIXVMZSQHWXOZYVTB7ILUCWZ7DDFAKVAC
SZYDW2DG5Z7BR3ICKWDXVUNSMCDSXMYZUB6FQ4W2B2FVZJD6PULQC
JFZNAYJXKCMXYHGCLTRH7Q6TOFGJ4BT6332GONCWVYRLNMDDG3KAC
GPRYAAFPVGMT7TMZILMR22FFUBB436CDM5GYVQJ7GL2H6J7WFH5QC
NUIKDEHLDR4ANFZFRCWBAWZGFVMHCZ7PSMPPFVQJ3AAAAWAQQD4AC
W6DC6K4INJQOJYR553ISCKZV7YIOGHEM3FZQPOLAPSZQ3KSJDMRQC
7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC
UWVMQIAC2HQNSG2JQOPZGUOCQ5V2JFP2F7RCTF3WJLK7NHSD5PAAC
PC6UOHH72AUR64GFBIXXLKGP2CLEUWCI3E3QMKNYCZHRMNCHUDVAC
SGNXIOI4SO56F4YCGVMGZZO3AYXGPDL4FL75RDXAK5Y22IYWPPAQC
QTFVCDIFHTF36AGU4UGNCTWSHQYTM2KERXS26TPAJK7IDJHL7BVAC
Z6MDQIGODVE7RXX5U5D64EEC2ZDEZ36Z4ZMPFYIHWBG42IXUDYFQC
RBNQKATLSAKTGW2IRNB5CRV3SEH5F6E4BPVWX4BII7MH5TCIPINQC
SIIXRVUE4G4HNIRGHVO7AUQMRRTVRGBPDMWER6LB63VFV4CWX2OAC
HK32XC42XOS7JKJMFT3XJKPXVSI44SFGKUUSJIL5VGPIHYNNWXLAC
JRU2LRPZ7PB2GHIY5FY2YW7KGFWPOMPGS6QGK7TE5HFHQQQ4YQIAC
L7LFU6IQA7XLRG67U34INTUSYIWP66LFFJE43J6S3GMMQHXXFKRAC
2AUODJBTW2UJ47UB3SREZ7O7UTTJDQ4AGUQMPZAI4F3Y6BUF6LUQC
PRNGXWJ3RSR67M5S6RLDAYRFGPBT3K2VR2BKDMPIUU7SRCC5RU7QC
EFWN7JBV7YIHNMCA6ZGFRSHZIUQJ2EX57SWYGVT7ZRJCHPIM2R3QC
FZVIDIEPIRHU47NWD47ORSVMCEJP6LLTFPVRFEOPONZSHUHF5R2AC
BD3GRK4BQUGRQGTAILUITIH3RRSVUH6AKINVMMKYLBAAHAAUSB4AC
JD27RBKM7ROBUKBEQDFSCPO3MDE2AFZ6DSSKFUPJ7IC2MCGDVFGAC
H7CNGK4OJNRYZQGPLBGR72DULLEPFQ5UISF5J24D7IMA7SYW5LGQC
DVNWJXWWZAR4LGE3FGGY64EW5U6GWH6MXXAALWPO3EMI4NO42ZXAC
B72GLND4UQKSGNGIY4FA6HLQNFS42SKRXV5NHTHADUJRU73NELAAC
SZZ3PFYFHYC6YUGS3VMTUZ7CKKKJHRBTA52P7ONZRSDJWW23SO5QC
2GK5DOU7ODF4WBSN3QTD3WIO52VTL2LOAXKGCDEMMAQPTEO4A4HAC
MOCEUXZAS4CNZL2QDKGVTZCRZ6AMOO2WSFHJ4VPZPPPAXHANG4NAC
MMDLWWZ2W2XVHHOTG2S5XCPITVNIJQ6F7GLCF2MKQANFNFEID7DAC
K5BEBWKMPMTXDZTZECMJ32LCL354WMOM3RPEFWGHJFB3QH7FH6WAC
I35CIZI7RMBRNCRF2Z3WWFWNMDSSDKU7YMBHGPPGZKPZ6PSRTV7AC
YTZOC7C5N3JI3AOFPLT2UM7567XIKPSCMFKSESB6J4LNVVW3DOCAC
GPHLV42M5EGNMSMFVZ54H3LY6QD5R4FE43565A7HJMI3V23FPDCAC
A52HEFHQNVNF2OUSWDSUYVVXLYR2UFCGOORPCN27CJJYA4UDJA3AC
KSVD6RAPQW57PJEN3VY5XFMSHMLKC5JN6BVVNA4GFNXTVGG3FZKQC
QT4FO2HPUPOS72Y5UTILN5AOV7S47AGG7V32CT24NA7TOVP76NAQC
FHF6IZJQPUQHY5QWQYRPZVDBRLHREWRHGNKVQDT7F3GQKKLZXJKQC
PPJN6SDP3BIWOB5LB3B2F3HEWM4IG7WZMG7JICERVBR7CDMBOPOQC
OZ5UBJEKYFW5WXAJ72IKTEZC7Z3FFFNCIBDPIDNM2CLINFSPYTTAC
mkdir -p $(hydradir)/static/bootstrap
cp -prvd $(srcdir)/static/bootstrap/* $(hydradir)/static/bootstrap
<ul>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Project').action_for('create')) content = "Create project" %]</li>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('users')) content = "Manage users" %]</li>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('news')) content = "Manage news" %]</li>
<li>Queue
<ul>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('clear_queue')) content = "Clear all non-running builds from queue." confirmmsg = "Are you sure you want to clear the queue?" %]</li>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('clear_queue_non_current')) content = "Clear all non-running old builds from queue." confirmmsg = "Are you sure you want to clear the queue?" %]</li>
</ul>
</li>
<li>Caching
<ul>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('clearfailedcache')) content = "Clear failed builds cache" confirmmsg = "Are you sure you want to clear the failed builds cache?" %]</li>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('clearvcscache')) content = "Clear VCS caches" confirmmsg = "Are you sure you want to clear the VCS caches?" %]</li>
</ul>
</li>
</ul>
<div id="generic-tabs">
<ul>
<li><a href="#tabs-summary">Summary</a></li>
<li><a href="#tabs-information">Information</a></li>
<li><a href="#tabs-buildinputs">Build Inputs</a></li>
[% IF relatedbuilds %]<li><a href="#tabs-relatedbuilds">Related builds</a></li>[% END %]
[% IF build.buildsteps %]<li><a href="#tabs-buildsteps">Build Steps</a></li>[% END %]
[% IF build.dependents %]<li><a href="#tabs-usedby">Used by</a></li>[% END%]
[% IF prevBuilds %]<li><a href="#tabs-history">History chart</a></li>[% END %]
<ul id="tab" class="nav nav-tabs">
<li><a href="#tabs-summary" data-toggle="tab">Summary</a></li>
<li><a href="#tabs-information" data-toggle="tab">Information</a></li>
<li><a href="#tabs-buildinputs" data-toggle="tab">Build Inputs</a></li>
[% IF relatedbuilds %]<li><a href="#tabs-relatedbuilds" data-toggle="tab">Related builds</a></li>[% END %]
[% IF build.buildsteps %]<li><a href="#tabs-buildsteps" data-toggle="tab">Build Steps</a></li>[% END %]
[% IF build.dependents %]<li><a href="#tabs-usedby" data-toggle="tab">Used by</a></li>[% END%]
[% IF prevBuilds %]<li><a href="#tabs-history" data-toggle="tab">History chart</a></li>[% END %]
<td valign="center">[% INCLUDE renderBuildStatusIcon build=prevSuccessfulBuild size=32 %] [% INCLUDE renderFullBuildLink build=prevSuccessfulBuild %]</td>
[% IF prevSuccessfulBuild && firstBrokenBuild && firstBrokenBuild.id != build.id %]<td valign="center">[% INCLUDE renderBuildStatusIcon build=firstBrokenBuild size=32 %] [% INCLUDE renderFullBuildLink build=firstBrokenBuild %]</td>[% END %]
<td>[% INCLUDE renderBuildStatusIcon build=build size=32 %] [% INCLUDE renderFullBuildLink build=build %]</td>
<td valign="center">[% INCLUDE renderBuildStatusIcon build=prevSuccessfulBuild size=32 %] [% INCLUDE renderFullBuildLink build=prevSuccessfulBuild, hideProjectName=1, hideJobsetName=1 %]</td>
[% IF prevSuccessfulBuild && firstBrokenBuild && firstBrokenBuild.id != build.id %]<td valign="center">[% INCLUDE renderBuildStatusIcon build=firstBrokenBuild size=32 %] [% INCLUDE renderFullBuildLink build=firstBrokenBuild, hideProjectName=1, hideJobsetName=1 %]</td>[% END %]
<td>[% INCLUDE renderBuildStatusIcon build=build size=32 %] [% INCLUDE renderFullBuildLink build=build, hideProjectName=1, hideJobsetName=1 %]</td>
<table class="buildList [% IF !unsortable %]tablesorter[% END %] [% IF !showSchedulingInfo %] clean[% END %]">
<table class="buildList table table-striped table-condensed [% IF !unsortable %]tablesorter[% END %] [% IF !showSchedulingInfo %] clean[% END %]">
<ul class="pagination">
<li><a href="[% "$baseUri?page=1" %]">First</a></li>
<li [% IF page == 1 %]class="disabled"[% END %]><a href="[% "$baseUri?page="; (page - 1) %]">Previous</a></li>
<li [% IF page * resultsPerPage < total %]class="disabled"[% END %]><a href="[% "$baseUri?page="; (page + 1) %]">Next</a></li>
<li><a href="[% "$baseUri?page="; (total - 1) div resultsPerPage + 1 %]">Last</a></li>
</ul>
<!--
<h1>Job <tt>[% INCLUDE renderLink
uri = c.uri_for(c.controller('Project').action_for('view'), [project.name])
title = project.name %]:[% INCLUDE renderLink
uri = c.uri_for(c.controller('Jobset').action_for('index'), [project.name, jobset.name])
title = jobset.name %]:[% job.name %]</tt></h1>
<div id="generic-tabs">
<ul>
<li><a href="#tabs-status">Status</a></li>
<li><a href="#tabs-channels">Channels</a></li>
<li><a href="#tabs-latestbuilds">Latest builds</a></li>
<!-- <li><a href="#tabs-statistics">Statistics</a></li> -->
<ul id="tab" class="nav nav-tabs">
<li><a href="#tabs-status" data-toggle="tab">Status</a></li>
<li><a href="#tabs-channels" data-toggle="tab">Channels</a></li>
<li><a href="#tabs-latestbuilds" data-toggle="tab">Latest builds</a></li>
[% eval.get_column('nrSucceeded') %] / [% eval.get_column('nrBuilds') %]
<span class="label label-success">[% eval.get_column('nrSucceeded') %]</span>
<span class="label label-important">[% eval.get_column('nrBuilds') - eval.get_column('nrSucceeded') - eval.get_column('nrScheduled') %]</span>
<li><a href="#tabs-information">Jobset</a></li>
[% IF jobset.errormsg -%]<li><a href="#tabs-errors">Evaluation errors</a></li>[% END %]
<li><a href="#tabs-jobs">Jobs ([% activeJobs.size %])</a></li>
<li><a href="#tabs-information" data-toggle="tab">Jobset</a></li>
[% IF jobset.errormsg -%]<li><a href="#tabs-errors" data-toggle="tab">Evaluation errors</a></li>[% END %]
<li><a href="#tabs-jobs" data-toggle="tab">Jobs ([% activeJobs.size %])</a></li>
[% IF !edit && c.user_exists %]
<p>
[ <a href="[% c.uri_for('/jobset' project.name jobset.name 'edit') %]">Edit</a> | <a href="[% c.uri_for('/jobset' project.name jobset.name 'clone') %]">Clone</a> ]
</p>
[% END %]
[%#
<div id="tabs-statistics">
<h2>Statistics</h2>
[% INCLUDE showBuildStats % ]
</div>
%]
<link type="text/css" href="/static/js/jquery/css/smoothness/jquery-ui-1.8.5.custom.css" rel="Stylesheet" />
<link rel="stylesheet" href="/static/css/hydra.css" type="text/css" />
<link rel="stylesheet" href="/static/css/nixos-site.css" type="text/css" />
<link rel="stylesheet" href="/static/css/logfile.css" type="text/css" />
<script type="text/javascript" src="/static/js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/static/js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="/static/js/tablesorter/jquery.tablesorter.js"></script>
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css" type="text/css" />
<style>
body {
padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
padding-bottom: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
}
</style>
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap-responsive.css" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<script type="text/javascript" src="/static/bootstrap/js/bootstrap-dropdown.js"></script>
<script type="text/javascript" src="/static/bootstrap/js/bootstrap-tab.js"></script>
<script type="text/javascript" src="/static/bootstrap/js/bootstrap-alert.js"></script>
<!--
<script type="text/javascript" src="/static/js/tablesorter/jquery.tablesorter.js"></script>
-->
<div id="header">
<div id="logo"><a class="no-hover" href="/"><img src="[% logo %]" alt="Hydra Logo" /></a></div>
[% PROCESS topbar.tt %]
[% PROCESS contextbar.tt %]
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="[% c.uri_for(c.controller('Root').action_for('index')) %]">Hydra</a>
<div class="nav-collapse">
[% PROCESS topbar.tt %]
</div><!--/.nav-collapse -->
</div>
[% BLOCK makeLinkWrapped %]
<li [% IF curUri == uri %]class="active"[% END %]>
<div class="title"><a href="[% uri %]">[% title %]</a></div>
[% content %]
</li>
[% END %]
[% BLOCK menuItem %]
<li [% IF "${root}${curUri}" == uri %]class="active"[% END %]>
<a href="[% uri %]">[% title %]</a>
</li>
[% END %]
[% BLOCK makeLink -%]
[% INCLUDE makeLinkWrapped content="" -%]
[% END %]
[% BLOCK makeSubMenu %]
[% extra = collapsed ? "collapsed" : "" %]
<div id="left-title">[% title %]</div>
<ul id="left-menu">
[% content %]
</ul>
[% END %]
[% IF project || admin %]
<div id="left-bar">
[% IF project %]
[% WRAPPER makeSubMenu title="Project" collapsed=(jobset || job) %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('view'), [project.name]) title = "Overview" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('releases'), [project.name]) title = "Releases" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('all'), [project.name]) title = "All builds" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('jobstatus'), [project.name]) title = "Job status" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('errors'), [project.name]) title = "Errors" %]
[% END %]
[% END %]
[% IF jobset %]
[% WRAPPER makeSubMenu title="Jobset" collapsed=job %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('index'), [project.name, jobset.name])
title = "Overview" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('evals'), [project.name, jobset.name])
title = "Evaluations" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('all'), [project.name, jobset.name])
title = "All builds" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('jobstatus'), [project.name, jobset.name])
title = "Job status" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('errors'), [project.name, jobset.name])
title = "Errors" %]
[% END %]
[% END %]
[% IF job %]
[% WRAPPER makeSubMenu title="Job" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('overview'), [project.name, jobset.name, job.name])
title = "Overview" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('all'), [project.name, jobset.name, job.name])
title = "All builds" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('jobstatus'), [project.name, jobset.name, job.name])
title = "Job status" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('errors'), [project.name, jobset.name, job.name])
title = "Errors" %]
[% END %]
[% END %]
[% IF admin %]
[% WRAPPER makeSubMenu title="Admin" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Admin').action_for('machines'))
title = "Machines" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Admin').action_for('managenews'))
title = "News" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Admin').action_for('users'))
title = "Users" %]
[% END %]
[% END %]
</div>
[% END %]
<p><b>[% INCLUDE renderDateTime timestamp=i.createtime %]</b> <tt>by [% i.author.fullname %]</tt> <br/>[% contents.replace('\n','<br />\n') %]
<h4 class="alert-heading">[% INCLUDE renderDateTime timestamp=i.createtime %] by [% i.author.fullname %]</h4>
[% contents.replace('\n','<br />\n') %]
[% IF create %]
<h1>New Project</h1>
[% ELSE %]
<h1>Project <tt>[% project.name %]</tt></h1>
[% END %]
<div id="generic-tabs">
<ul>
<ul id="tab" class="nav nav-tabs">
<li><a href="#tabs-views">Views</a></li>
<li><a href="#tabs-channels">Channels</a></li>
<!-- <li><a href="#tabs-statistics">Statistics</a></li> -->
<li><a href="#tabs-views" data-toggle="tab">Views</a></li>
<li><a href="#tabs-channels" data-toggle="tab">Channels</a></li>
<td align="right">
<div class="[% class %]">[% successrate FILTER format('%d') %]%</div>
<td>
<span class="[% class %]">[% successrate FILTER format('%d') %]%</span>
</td>
<td>
[% IF j.get_column('nrsucceeded') > 0 %]
<span class="label label-success">[% j.get_column('nrsucceeded') %]</span>
[% END %]
[% IF j.get_column('nrfailed') > 0 %]
<span class="label label-important">[% j.get_column('nrfailed') %]</span>
[% END %]
<td>[ [% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('force_eval'), project.name, j.name) content = "Evaluate" confirmmsg = ("Are you sure you want to force evaluation of jobset " _ project.name _ ":" _ j.name _ "?") %]
| [% IF j.hidden %]
[% INCLUDE maybeLink uri = c.uri_for('/jobset' project.name j.name 'unhide') content = "Unhide" %]
<td>[% INCLUDE maybeButton uri = c.uri_for(c.controller('Admin').action_for('force_eval'), project.name, j.name) content = "Evaluate" confirmmsg = ("Are you sure you want to force evaluation of jobset " _ project.name _ ":" _ j.name _ "?") %]
[% IF j.hidden %]
[% INCLUDE maybeButton uri = c.uri_for('/jobset' project.name j.name 'unhide') content = "Unhide" %]
[%#
<div id="tabs-statistics">
<h2>Statistics</h2>
[% INCLUDE showBuildStats % ]
</div>
%]
body {
font-family: sans-serif;
background: white;
margin: 2em 1em 2em 1em;
}
#logo img {
height: 6em;
}
img {
border-style: none;
}
a { text-decoration: none;}
a:link { color: #0048b3; }
a:visited { color: #002a6a; }
a.no-hover:hover { background: none; }
a:hover, a:visited:hover { text-decoration: underline;}
a.smallLink {
font-size: 60%;
vertical-align: top;
}
a#error-link {
color: red;
}
table {
empty-cells: show;
border-collapse: collapse;
text-align: left;
}
th, td {
border: 1px solid #dddddd;
vertical-align: top;
}
th {
background-color: #E6EEEE;
}
th.subheader {
background-color: #f0f0f8;
font-size: 120%;
text-align: center;
font-weight: normal;
}
table.tablesorter:not(.clean) tr:nth-child(even) {
background-color: #efefef;
}
table.tablesorter:not(.clean) tr:nth-child(odd) {
background-color: #ffffff;
}
tr.clickable:hover {
background-color: #E6EEFF;
cursor: pointer;
}
td.centered {
text-align: center;
}
td.right {
text-align: right;
}
.layoutTable td, .layoutTable th {
border-style: none;
}
table.tablesorter thead tr .header {
background-image: url(/static/js/tablesorter/themes/blue/bg.gif);
background-repeat: no-repeat;
background-position: center right;
cursor: pointer;
}
table.tablesorter thead tr .headerSortUp {
background-image: url(/static/js/tablesorter/themes/blue/asc.gif);
}
table.tablesorter thead tr .headerSortDown {
background-image: url(/static/js/tablesorter/themes/blue/desc.gif);
}
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
background-color: #D6DDDD;
}
table.tablesorter thead tr th {
padding-right: 1.5em;
}
#generic-tabs li {
height : 30px;
font-size : 90%;
}
#generic-tabs div {
font-size : 90%;
}
h1, h2, h3 {
font-weight: bold;
color: #002a70;
}
ul.productList {
list-style: none;
padding-left: 1em;
}
ul.productList li {
margin-top: 1em;
}
.productDetails {
display: none;
margin-top: 1em;
margin-bottom: 1em;
margin-left: 3em;
}
tr:nth-child(even).runningBuild {
background-color: #d8ffd8 !important;
}
tr:nth-child(odd).runningBuild {
background-color: #e8ffe8 !important;
}
.disabledBuild {
background-color: #ffc0c0 !important;
}
.error-msg {
color: red;
white-space: pre-wrap;
}
.error {
color: red;
font-weight: bold;
}
pre {
margin-left: 1.5em;
margin-right: 1.5em;
}
pre.buildlog {
border: 1px solid black;
padding: 0.3em;
white-space: pre-wrap;
}
pre.taillog {
border: 3px solid darkblue;
padding: 0.3em;
white-space: pre-wrap;
background: black;
color: #ffffff;
}
div.buildlog {
border: 1px solid black;
padding: 0.3em;
}
.multiLineMsg {
padding: 0em;
margin: 0em;
white-space: pre-wrap;
}
.template {
display: none;
}
div.help {
border: solid black 1px;
padding-left: 1em;
padding-right: 1em;
}
div.help pre {
padding-left: 1.5em;
color: #400000;
}
th.releaseSetJobName {
font-size: 60%;
padding: 0 0 0 0;
}
input.string {
font-family: sans-serif;
font-size: 100%;
background-color: #fffff0;
width: 20em;
}
input.shortString {
width: 7em;
}
input.longString {
width: 40em;
.logTreeToggle {
text-decoration: none;
font-family: monospace;
font-size: larger;
select {
background-color: #fffff0;
}
button {
background-color: #f0f0e0;
}
form.inline {
display: inline;
}
.red {
color: red;
}
.orange {
color: orange;
}
.green {
color: green;
}
.newsbar {
background-color:#D9E3EA;
border:1px solid #999999;
float:right;
font-size:x-small;
margin:0 0 0.5em 0.5em;
overflow:hidden;
padding:0.5em;
width:30em;
}
[% WRAPPER makeSubMenu title="Hydra" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Root').action_for('index'))
title = "Projects" %]
[% BLOCK makeLinkWrapped %]
<li [% IF curUri == uri %]class="active"[% END %]>
<a href="[% uri %]">[% title %]</a>
[% content %]
</li>
[% END %]
[% BLOCK makeLink -%]
[% INCLUDE makeLinkWrapped content="" -%]
[% END %]
<ul class="nav" id="top-menu">
title = "All builds" %]
[% IF project || admin %]
[% IF project %]
[% WRAPPER makeSubMenu title=("Project: " _ project.name) collapsed=(jobset || job) %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('view'), [project.name]) title = "Overview" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('releases'), [project.name]) title = "Releases" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('all'), [project.name]) title = "All builds" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('jobstatus'), [project.name]) title = "Job status" %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('errors'), [project.name]) title = "Errors" %]
[% IF c.check_user_roles('admin') %]
<li class="divider"></li>
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('create_jobset'), [project.name]) title = "Create new jobset" %]
[% INCLUDE menuItem uri = c.uri_for('/project' project.name 'edit') title="Edit project" %]
[% END %]
[% END %]
[% END %]
[% IF jobset %]
[% WRAPPER makeSubMenu title=("Jobset: " _ jobset.name) collapsed=job %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('index'), [project.name, jobset.name])
title = "Overview" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('evals'), [project.name, jobset.name])
title = "Evaluations" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('all'), [project.name, jobset.name])
title = "All builds" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('jobstatus'), [project.name, jobset.name])
title = "Job status" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Jobset').action_for('errors'), [project.name, jobset.name])
title = "Errors" %]
[% IF c.check_user_roles('admin') %]
<li class="divider"></li>
[% INCLUDE menuItem uri = c.uri_for('/jobset' project.name jobset.name 'edit') title="Edit jobset" %]
[% INCLUDE menuItem uri = c.uri_for('/jobset' project.name jobset.name 'clone') title="Clone jobset" %]
[% END %]
[% END %]
[% END %]
[% IF job %]
[% WRAPPER makeSubMenu title=("Job: " _ job.name) %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('overview'), [project.name, jobset.name, job.name])
title = "Overview" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('all'), [project.name, jobset.name, job.name])
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('jobstatus'), [project.name, jobset.name, job.name])
title = "Job status" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Job').action_for('errors'), [project.name, jobset.name, job.name])
title = "Errors" %]
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('users')) content = "Manage users" %]</li>
<li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('news')) content = "Manage news" %]</li>
[% END %]
[% END %]
[% END %]
[% IF c.user_exists %]
[% IF c.check_user_roles('admin') %]
[% WRAPPER makeSubMenu title="Admin" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Admin').action_for('index'))
title = "Machine status" %]
<li class="divider"></li>
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Admin').action_for('machines'))
title = "Manage machines" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Admin').action_for('managenews'))
title = "Manage news" %]
[% INCLUDE makeLink
uri = c.uri_for(c.controller('Admin').action_for('users'))
title = "Manage users" %]
<li class="divider"></li>
[% INCLUDE maybeLink
uri = c.uri_for(c.controller('Admin').action_for('clearfailedcache'))
content = "Clear failed builds cache"
confirmmsg = "Are you sure you want to clear the failed builds cache?" %]
[% INCLUDE maybeLink
uri = c.uri_for(c.controller('Admin').action_for('clear_queue_non_current'))
content = "Clear all non-running old builds from queue."
confirmmsg = "Are you sure you want to clear the queue?"
%]
<li class="divider"></li>
[% IF c.check_user_roles('admin') %]
[% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('create')) title = "Create new project" %]
[% END %]
[% END %]
[% END %]
[% END %]
</ul>