Bootstrapify the Hydra forms (except the project and jobset edit pages)

[?]
Apr 17, 2012, 2:53 PM
JARRBLZDQ2JZWY7IUVPTOT7WJMBPMLFLF2MGLVGOYROAAISYGLSAC

Dependencies

  • [2] 5DSDXORD hydra: missing plain.tt
  • [3] PALLP4UY is not in hydra-server's scope
  • [4] FFEH62DE Machine status page now looks much better and more consistent with rest of Hydra
  • [5] Z2E5PAYY Move Hide/Unhide links for project to toplevel menu.
  • [6] ZLQL62FK Only show "Running build steps" if there are running build steps
  • [7] HQGXL4MX Add validation for project and jobset names
  • [8] KXGOUX7P * Creating releases.
  • [9] 6F4UNDTC * Provide access to the raw, non-pretty-printed logfiles.
  • [10] 6KJXJB7N qualify ordery_by clauses when necessary, remove unnecessary order_by's, reported by Ludo, resulted in errors in sqlite
  • [11] H5REHM3M
  • [12] E3X3C5LK Replace ugly link with nice small buttons
  • [13] QT4FO2HP refactored admin controller, using chains, to avoid using requireadmin on each endpoint
  • [14] GNIEG2GC * Disambiguate jobs by jobset name. I.e. jobs with the same name in
  • [15] MMDLWWZ2 automatic reload of tail log when build is running
  • [16] WT7BGOXO Move 'clone build' to top menu
  • [17] ZI535LI6 * hydra: 'new' UI for project/jobset/job/build
  • [18] 3E6IP3R3 * Add the name of the jobset to ReleaseSetJobs, otherwise we can't
  • [19] Z6MDQIGO * A quick (non-Web 2.0) interface to manually add builds to a release.
  • [20] JFZNAYJX * Showing releases.
  • [21] GEL2WHSU Move channel link to top menu of Project and Jobset.
  • [22] U4TD3AIQ Add support for viewing jobset evaluations
  • [23] LQ5QEDVV
  • [24] RBNQKATL * Adding persistant releases. A release is a named set of builds.
  • [25] SU566LI3 * Sort releases.
  • [26] RJICSUYG * Align the apply/delete buttons.
  • [27] QL55ECJ6 - adapted ui for hydra, more in line with nixos.org website
  • [28] FGQPXZIX hydra: make nr of build to keep configurable per jobset
  • [29] G5YSUSNZ In build tables, hide the project, jobset and/or job name if they're constant
  • [30] KVPYKWZ7 * Allow `-' in project/jobset names.
  • [31] OEPUOUNB Using twitter bootstrap for more consistent looks for Hydra
  • [32] YNKTJGRS * hydra: correct header in jobstatus page of jobset
  • [33] QTFVCDIF added hide feature for project/jobset
  • [34] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [35] YTSIRIMK * Separate job status and all builds pages.
  • [36] E6IC7YIK * Release sets: need to include the jobset name to disambiguate
  • [37] PP4LPADG hydra: buildmachine disabled by default, add some default constraints
  • [38] G6HJY2V4
  • [39] RSEGBU6C Hydra/20: Jobset clone feature
  • [40] DE2DNCOI Allow comparing an evaluation with an arbitrary other evaluation
  • [41] 67NFGL7D add links in admin page to clear queue (all non-running builds, and all non-running old (non-current) builds)
  • [42] TSJHDJVI Fix hide/unhide links.
  • [43] FPK5LF53 * Put the project-related actions in a separate controller. Put the
  • [44] BHZXGT2H * Channels: provide an index page that lists all the packages in the
  • [45] D5QIOJGP * Move everything up one directory.
  • [46] TP3PFR5K
  • [47] ZNFDFJHG * Provide a redirect to the latest successful release in a release set
  • [48] UWVMQIAC * Refactoring.
  • [49] TQKGQ5R3
  • [50] SMCOU72F hydra: add some admin for adding/enabling/etc build machines
  • [51] QU5I5GCL
  • [52] SMTMFEKE hydra: add missing templates
  • [53] L7NUCXKS Show new and removed jobs
  • [54] 6JGCGK5X
  • [55] 3HZY24CX * Make jobsets viewable under
  • [56] P5X4P6VK * Renaming "release sets" to "views" (not finished yet). Having
  • [57] 2JQ7WEFM
  • [58] LZO3C2KI * Hack around those SQLite timeouts: just retry the transaction.
  • [59] CLJQCY2X * Store info about all the build actions and allow them to be
  • [60] W6DC6K4I * Happy Javascript hacking.
  • [61] DL5J5FCO Fix evaluate link.
  • [62] GPHLV42M * Allow the description of a release member to be edited, and to
  • [63] SZYDW2DG hydra: added some user admin
  • [64] ZWCTAZGL added newsitems, added some admin options to clear various caches.
  • [65] BD3GRK4B * Get rid of "positive failures" and separate log phases.
  • [66] 75XUS62Y * Added a page to quickly see all failed builds and failed evaluations
  • [67] RGRBQI2F show all related jobset/job links in navbar for the tail/-reload logs
  • [68] DEMSSSB2 * Controller for jobs which inherits all actions in ListBuilds. So
  • [69] MWU6FF4K
  • [70] 5IK6NYKF
  • [71] NDL67SQT * XHTML validity.
  • [72] GAIBDEZZ * Store the name of the machine that performed a build step in the
  • [73] IGNQFFV7 * Put the release sets in the navbar.
  • [74] 2BUX775I * More release -> view.
  • [75] 6FRLEP4P first try for timeline of last 24 hours in hydra
  • [76] GRVVUPQH * hydra: wider timeline
  • [77] KWXA2SFU Reinstate the edit/clone links on the jobset page.
  • [78] D5ZR3ZY6 hydra: missing property
  • [79] AS2OXLRM * Editing releases.
  • [80] Q4VDOA76 Replace last 5 builds on jobset page with last 5 evaluations. Moved hide/unhide and evaluate options to jobset topmenu.
  • [81] OW6XV2YS * Allow a view result to be saved as a release.
  • [82] TVGN5QT5 add link to status page on queue page
  • [83] WRIU3S5E * UI for cloning builds (not functional yet).
  • [84] FHF6IZJQ * Basic release management: releases are now dynamically computed as
  • [85] RU7AQO7U * Role-based access control. Only admins can create projects. Only
  • [86] EFWN7JBV * Added a status page that shows all the currently executing build steps.
  • [87] 2AUODJBT
  • [88] J5UVLXOK * Start of a basic Catalyst web interface.
  • [89] MHX5I2GC remove delete jobset button until we actually have implemented the action properly
  • [90] 2AIIYGI5 * Show job status and all builds for a project.
  • [91] TMP2FRIW
  • [*] SGNXIOI4 Hydra/32: Add option to force evaluation of a certain jobset via web interface (for admins only)
  • [*] IK53RV4V
  • [*] 7YBYT2LQ

Change contents

  • edit in src/lib/Hydra/Controller/Admin.pm at line 17
    [3.21]
    [8.25]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 36
    [8.597]
    [8.597]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 47
    [8.882]
    [8.1]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 54
    [8.240]
    [8.65]
  • replacement in src/lib/Hydra/Controller/Admin.pm at line 69
    [8.280][8.1488:1491]()
    }
    [8.280]
    [8.126]
    }
  • edit in src/lib/Hydra/Controller/Admin.pm at line 95
    [8.1100]
    [8.1100]
    sub create_user : Chained('admin') PathPart('create-user') Args(0) {
    my ($self, $c) = @_;
    requireAdmin($c);
    error($c, "Not implemented yet!"); # FIXME
    }
  • edit in src/lib/Hydra/Controller/Admin.pm at line 116
    [8.1370]
    [8.1370]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 125
    [8.1492]
    [8.1586]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 133
    [8.1740]
    [8.1740]
  • replacement in src/lib/Hydra/Controller/Admin.pm at line 139
    [8.1897][8.1897:1941]()
    updateUser($c, $c->stash->{user}) ;
    [8.1897]
    [8.1941]
    if (($c->request->params->{submit} || "") eq "delete") {
    $c->stash->{user}->delete;
    } else {
    updateUser($c, $c->stash->{user});
    }
  • edit in src/lib/Hydra/Controller/Admin.pm at line 145
    [8.1949]
    [8.1949]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 148
    [8.1990]
    [8.1990]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 167
    [8.2361]
    [8.2361]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 195
    [8.3008]
    [8.3008]
  • replacement in src/lib/Hydra/Controller/Admin.pm at line 205
    [8.1981][8.1981:1984]()
    }
    [8.1981]
    [8.1984]
    }
  • edit in src/lib/Hydra/Controller/Admin.pm at line 219
    [8.283]
    [8.2288]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 227
    [8.2549]
    [8.2549]
  • replacement in src/lib/Hydra/Controller/Admin.pm at line 233
    [8.2712][8.2712:2759]()
    updateMachine($c, $c->stash->{machine}) ;
    [8.2712]
    [8.2759]
    if (($c->request->params->{submit} || "") eq "delete") {
    $c->stash->{machine}->delete;
    } else {
    updateMachine($c, $c->stash->{machine});
    }
  • edit in src/lib/Hydra/Controller/Admin.pm at line 239
    [8.2767]
    [8.2767]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 241
    [8.2792]
    [8.2792]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 245
    [8.2837]
    [8.2837]
  • replacement in src/lib/Hydra/Controller/Admin.pm at line 247
    [8.2857][8.2857:2882]()
    my ($c, $machine) = @_;
    [8.2857]
    [8.2882]
    my ($c, $machine) = @_;
  • edit in src/lib/Hydra/Controller/Admin.pm at line 278
    [8.4111]
    [8.4111]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 309
    [8.4961][8.4961:5076]()
    sub machine_delete : Chained('machine') PathPart('delete') Args(0) {
    my ($self, $c) = @_;
    requirePost($c);
  • edit in src/lib/Hydra/Controller/Admin.pm at line 310
    [8.5077][8.5077:5157](),[8.5157][8.363:371](),[8.371][8.5169:5239](),[8.5169][8.5169:5239]()
    txn_do($c->model('DB')->schema, sub {
    $c->stash->{machine}->delete;
    });
    saveNixMachines($c);
    $c->res->redirect("/admin/machines");
    }
  • edit in src/lib/Hydra/Controller/Admin.pm at line 316
    [8.5453]
    [8.5453]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 324
    [8.2]
    [8.2]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 332
    [8.260]
    [8.260]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 340
    [8.5670]
    [8.5670]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 349
    [8.484]
    [8.484]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 368
    [8.1145]
    [8.1145]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 377
    [8.1391]
    [8.1391]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 395
    [8.1805]
    [8.1805]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 408
    [93.33]
    [93.33]
  • edit in src/lib/Hydra/Controller/Admin.pm at line 426
    [8.2173]
    [8.2173]
  • edit in src/lib/Hydra/Controller/Project.pm at line 48
    [8.2361]
    [8.215]
    if (($c->request->params->{submit} || "") eq "delete") {
    $c->stash->{project}->delete;
    $c->res->redirect($c->uri_for("/"));
    }
  • edit in src/lib/Hydra/Controller/Project.pm at line 72
    [8.2552]
    [8.2552]
  • edit in src/lib/Hydra/Controller/Project.pm at line 81
    [8.1415][8.1415:1472](),[8.1472][8.2554:2631](),[8.2554][8.2554:2631](),[8.2631][8.884:935](),[8.935][8.4747:4768](),[8.4768][8.2761:2766](),[8.2761][8.2761:2766](),[8.2766][8.258:300](),[8.300][8.936:974](),[8.2808][8.936:974]()
    });
    $c->res->redirect($c->uri_for("/"));
    }
    sub delete : Chained('project') PathPart Args(0) {
    my ($self, $c) = @_;
    requireProjectOwner($c, $c->stash->{project});
    requirePost($c);
    txn_do($c->model('DB')->schema, sub {
    $c->stash->{project}->delete;
  • edit in src/lib/Hydra/Controller/Project.pm at line 167
    [8.3797][8.3797:3853](),[8.3853][7.1369:1466]()
    my $projectName = trim $c->request->params->{name};
    error($c, "Invalid project name: ‘$projectName’") if $projectName !~ /^$projectNameRE$/;
  • edit in src/lib/Hydra/Controller/Project.pm at line 168
    [8.3971][8.3971:4109](),[8.4395][8.4395:4396]()
    my $displayName = trim $c->request->params->{displayname};
    error($c, "Invalid display name: $displayName") if $displayName eq "";
  • edit in src/lib/Hydra/Controller/Project.pm at line 175
    [8.5515]
    [8.5859]
    my $projectName = trim $c->request->params->{name};
    error($c, "Invalid project name: ‘$projectName’") if $projectName !~ /^$projectNameRE$/;
    my $displayName = trim $c->request->params->{displayname};
    error($c, "Invalid display name: $displayName") if $displayName eq "";
  • edit in src/lib/Hydra/Controller/Release.pm at line 55
    [8.524]
    [8.1803]
    $c->stash->{members} = [$c->stash->{release}->releasemembers->search({},
    {order_by => ["description"]})];
  • edit in src/lib/Hydra/Controller/View.pm at line 119
    [8.1589]
    [8.1589]
    if (($c->request->params->{submit} || "") eq "delete") {
    $c->stash->{view}->delete;
    $c->res->redirect($c->uri_for($c->controller('Project')->action_for('view'),
    [$c->stash->{project}->name]));
    }
  • edit in src/lib/Hydra/Controller/View.pm at line 128
    [8.1769][8.4195:4203](),[8.4195][8.4195:4203](),[8.4203][8.1770:1989](),[8.1989][8.1253:1374]()
    }
    sub delete : Chained('view') PathPart('delete') Args(0) {
    my ($self, $c) = @_;
    requireProjectOwner($c, $c->stash->{project});
    txn_do($c->model('DB')->schema, sub {
    $c->stash->{view}->delete;
    });
    $c->res->redirect($c->uri_for($c->controller('Project')->action_for('view'),
    [$c->stash->{project}->name]));
  • replacement in src/root/admin.tt at line 4
    [8.9392][4.0:24]()
    <h2>Machine status</h2>
    [8.9392]
    [8.9392]
    <div class="page-header"><h1>Machine status</h1></div>
  • replacement in src/root/all.tt at line 1
    [8.1038][8.1039:1082]()
    [% WRAPPER layout.tt title="All Builds" %]
    [8.1038]
    [8.1082]
    [% WRAPPER layout.tt title="All builds" %]
  • replacement in src/root/all.tt at line 4
    [8.1107][8.941:956]()
    <h1>All Builds
    [8.1107]
    [8.1212]
    <div class="page-header"><h1>All builds
  • replacement in src/root/all.tt at line 7
    [8.1354][8.1354:1430]()
    [% ELSIF project %] for Project <tt>[% project.name %]</tt>[% END %]</h1>
    [8.1354]
    [8.1127]
    [% ELSIF project %] for Project <tt>[% project.name %]</tt>[% END %]</h1></div>
  • replacement in src/root/build.tt at line 143
    [8.6009][8.6009:6250]()
    <form action="[% c.uri_for('/build' build.id 'add-to-release') %]" method="post">
    <p>Add to release: <input type="text" class="string" name="name" />
    <button type="submit"><img src="/static/images/success.gif" />Apply</button></p>
    [8.6009]
    [8.6250]
    <form class="form-horizontal" action="[% c.uri_for('/build' build.id 'add-to-release') %]" method="post">
    <div class="control-group">
    <label class="control-label">Add to release</label>
    <div class="controls">
    <input type="text" class="input" name="name"></input>
    <button type="submit" class="btn btn-success">Apply</button>
    </div>
    </div>
  • replacement in src/root/channel-contents.tt at line 5
    [8.3471][8.3471:3515]()
    <h1>Channel <tt>[% channelName %]</tt></h1>
    [8.3471]
    [8.263]
    <div class="page-header"><h1>Channel <tt>[% channelName %]</tt></h1></div>
  • replacement in src/root/clone-build.tt at line 6
    [8.826][8.826:847]()
    <h1>Clone Build</h1>
    [8.826]
    [8.847]
    <div class="page-header"><h1>Clone Build</h1></div>
  • replacement in src/root/common.tt at line 192
    [8.6972][8.9437:9615]()
    [% IF uri %]<a [% HTML.attributes(href => uri) %][% IF confirmmsg %]onclick="javascript:return confirm('[% confirmmsg %]')"[% END %]>[% content %]</a>[% ELSE; content; END -%]
    [8.6972]
    [8.7067]
    [% IF uri %]<a [% HTML.attributes(href => uri, class => class) %][% IF confirmmsg %]onclick="javascript:return confirm('[% confirmmsg %]')"[% END %]>[% content %]</a>[% ELSE; content; END -%]
  • replacement in src/root/common.tt at line 201
    [8.7124][8.7124:7399]()
    <select [% HTML.attributes(id => param, name => param) %]>
    [% FOREACH name IN options.keys.sort %]
    <option [% HTML.attributes(value => name) %] [% IF name == curValue; "selected='selected'"; END %]>[% options.$name %]</option>
    [% END %]
    </select>
    [8.7124]
    [8.7399]
    [% IF radiobuttons %]
    <div class="controls">
    [% FOREACH name IN options.keys.sort %]
    <label class="radio inline">
    <input type="radio" [% HTML.attributes(id => param, name => param, value => name) %]
    [% IF name == curValue; "checked='1'"; END %]>
    [% options.$name %]
    </input>
    </label>
    [% END %]
    </div>
    [% ELSE %]
    <select [% HTML.attributes(id => param, name => param) %]>
    [% FOREACH name IN options.keys.sort %]
    <option [% HTML.attributes(value => name) %] [% IF name == curValue; "selected='selected'"; END %]>[% options.$name %]</option>
    [% END %]
    </select>
    [% END %]
  • replacement in src/root/edit-release.tt at line 1
    [8.4487][8.4488:4560]()
    [% WRAPPER layout.tt title=(create ? "New Release" : "Edit Release") %]
    [8.4487]
    [8.4560]
    [% WRAPPER layout.tt title=(create ? "New release" : "Edit release") %]
  • replacement in src/root/edit-release.tt at line 5
    [8.4600][8.1485:1575]()
    <h1>[% IF create %]New Release[% ELSE %]Release <tt>[% release.name %]</tt>[% END %]</h1>
    [8.4600]
    [8.4621]
    <div class="page-header"><h1>[% IF create %]New release[% ELSE %]Release <tt>[% release.name %]</tt>[% END %]</h1></div>
  • replacement in src/root/edit-release.tt at line 7
    [8.4622][8.1576:1767]()
    <form action="[% IF create %][% c.uri_for('/project' project.name 'create-release/submit') %][% ELSE %][% c.uri_for('/release' project.name release.name 'submit') %][% END %]" method="post">
    [8.4622]
    [8.4823]
    <form class="form-horizontal" action="[% IF create %][% c.uri_for('/project' project.name 'create-release/submit') %][% ELSE %][% c.uri_for('/release' project.name release.name 'submit') %][% END %]" method="post">
  • replacement in src/root/edit-release.tt at line 9
    [8.4824][8.4824:5191](),[8.5191][8.561:588]()
    <table class="layoutTable">
    <tr>
    <th>Identifier:</th>
    <td><input type="text" class="string" name="name" [% HTML.attributes(value => release.name) %] /></td>
    </tr>
    <tr>
    <th>Description:</th>
    <td><input type="text" class="string" name="description" [% HTML.attributes(value => release.description) %] /></td>
    </tr>
    </table>
    <h3>Release Members</h3>
    [8.4824]
    [8.431]
    <fieldset>
    <div class="control-group">
    <label class="control-label">Identifier</label>
    <div class="controls">
    <input type="text" class="span3" name="name" [% HTML.attributes(value => release.name) %]></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Description</label>
    <div class="controls">
    <input type="text" class="span3" name="description" [% HTML.attributes(value => release.description) %]></input>
    </div>
    </div>
    <h3>Release members</h3>
  • edit in src/root/edit-release.tt at line 29
    [8.562][8.562:640]()
    [% FOREACH m IN release.releasemembers %]
    <div class="releaseMember">
  • replacement in src/root/edit-release.tt at line 30
    [8.641][8.641:821](),[8.588][8.1239:1240](),[8.821][8.1239:1240](),[8.1239][8.1239:1240](),[8.1240][8.822:1068]()
    <h4>Build [% m.build.id %] <button type="button" onclick='$(this).parents(".releaseMember").remove()'><img src="/static/images/failure.gif" alt="Delete input" /></button></h4>
    <table class="layoutTable">
    <tr>
    <th>Label:</th>
    <td><input type="text" class="string longString" name="member-[% m.build.id %]-description" [% HTML.attributes(value => m.description) %] /></td>
    </tr>
    </table>
    [8.641]
    [8.1068]
    [% FOREACH m IN members %]
  • edit in src/root/edit-release.tt at line 32
    [8.1069]
    [8.1069]
    <div class="releaseMember control-group">
    <label class="control-label">Build [% m.build.id %] Label</label>
    <div class="controls">
    <input type="text" class="span3" name="member-[% m.build.id %]-description" [% HTML.attributes(value => m.description) %]></input>
    <button class="btn btn-warning" type="button" onclick='$(this).parents(".releaseMember").remove()'><i class="icon-trash icon-white"></i></button>
    </div>
  • replacement in src/root/edit-release.tt at line 39
    [8.1080][8.1080:1081]()
    [8.1080]
    [8.1081]
  • edit in src/root/edit-release.tt at line 41
    [8.660][8.1786:1787](),[8.1093][8.1786:1787](),[8.1786][8.1786:1787](),[8.1787][8.1094:1103]()
    <hr />
  • replacement in src/root/edit-release.tt at line 42
    [8.2185][8.805:951]()
    <p>
    <button type="submit"><img alt="Apply" src="/static/images/success.gif" />[%IF create %]Create[% ELSE %]Apply changes[% END %]</button>
    [8.2185]
    [8.951]
    <div class="form-actions">
    <button type="submit" class="btn btn-primary">
    <i class="icon-ok icon-white"></i>
    [%IF create %]Create[% ELSE %]Apply changes[% END %]
    </button>
  • replacement in src/root/edit-release.tt at line 48
    [8.972][8.972:1308]()
    <button id="delete-release" type="submit" name="action" value="delete"><img alt="Delete" src="/static/images/failure.gif" />Delete this release</button>
    <script type="text/javascript">
    $("#delete-release").click(function() {
    return confirm("Are you sure you want to delete this release?");
    });
    </script>
    [8.972]
    [8.1308]
    <button id="delete-release" type="submit" class="btn btn-danger" name="action" value="delete">
    <i class="icon-trash icon-white"></i>
    Delete this release
    </button>
    <script type="text/javascript">
    $("#delete-release").click(function() {
    return confirm("Are you sure you want to delete this release?");
    });
    </script>
  • replacement in src/root/edit-release.tt at line 58
    [8.1322][8.1322:1329]()
    </p>
    [8.1322]
    [8.2195]
    </div>
    </fieldset>
  • replacement in src/root/edit-view.tt at line 1
    [8.1873][8.9811:9903]()
    [% WRAPPER layout.tt title=(create ? "New View" : "View ‘$project.name:$view.name’") %]
    [8.1873]
    [8.1959]
    [% WRAPPER layout.tt title=(create ? "New view" : "View ‘$project.name:$view.name’") %]
  • replacement in src/root/edit-view.tt at line 5
    [8.1999][8.9904:10004]()
    <h1>[% IF create %]New View[% ELSE %]View <tt>[% project.name %]:[% view.name %]</tt>[% END %]</h1>
    [8.1999]
    [8.73]
    <div class="page-header"><h1>[% IF create %]New view[% ELSE %]View <tt>[% project.name %]:[% view.name %]</tt>[% END %]</h1></div>
  • replacement in src/root/edit-view.tt at line 11
    [8.128][8.128:264]()
    <button type="button" onclick='$(this).parents("tr").remove()'>
    <img src="/static/images/failure.gif" alt="Delete job" />
    [8.128]
    [8.264]
    <button type="button" class="btn btn-warning" onclick='$(this).parents("tr").remove()'>
    <i class="icon-trash icon-white"></i>
  • edit in src/root/edit-view.tt at line 22
    [8.938][8.2073:2074](),[8.2073][8.2073:2074]()
  • edit in src/root/edit-view.tt at line 23
    [8.940][8.2903:3085]()
    <form action="[% IF create %][% c.uri_for('/project' project.name 'create-view/submit') %][% ELSE %][% c.uri_for('/view' project.name view.name 'submit') %][% END %]" method="post">
  • replacement in src/root/edit-view.tt at line 24
    [8.2209][8.2209:2275](),[8.2275][8.10180:10286](),[8.10286][8.2387:2434](),[8.2387][8.2387:2434](),[8.2434][8.10287:10407](),[8.10407][8.2560:2570](),[8.2560][8.2560:2570](),[8.2570][8.848:859]()
    <table class="layoutTable">
    <tr>
    <th>Identifier:</th>
    <td><input type="text" class="string" name="name" [% HTML.attributes(value => view.name) %] /></td>
    </tr>
    <tr>
    <th>Description:</th>
    <td><input type="text" class="string" name="description" [% HTML.attributes(value => view.description) %] /></td>
    </tr>
    </table>
    [8.2209]
    [8.859]
    <form class="form-horizontal" action="[% IF create %][% c.uri_for('/project' project.name 'create-view/submit') %][% ELSE %][% c.uri_for('/view' project.name view.name 'submit') %][% END %]" method="post">
  • edit in src/root/edit-view.tt at line 26
    [8.860]
    [8.3476]
    <fieldset>
    <div class="control-group">
    <label class="control-label">Identifier</label>
    <div class="controls">
    <input type="text" class="span3" name="name" [% HTML.attributes(value => view.name) %]></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Description</label>
    <div class="controls">
    <input type="text" class="span3" name="description" [% HTML.attributes(value => view.description) %]></input>
    </div>
    </div>
  • replacement in src/root/edit-view.tt at line 59
    [8.1022][8.1022:1112]()
    <td colspan="5"><button type="button" class="add-job">Add a new job</button></td>
    [8.1022]
    [8.1112]
    <td colspan="5" style="text-align: center;"><button type="button" class="add-job btn btn-success"><i class="icon-plus icon-white"></i> Add a job</button></td>
  • replacement in src/root/edit-view.tt at line 64
    [8.2582][8.2582:2715]()
    <p><button type="submit"><img src="/static/images/success.gif" />[%IF create %]Create[% ELSE %]Apply changes[% END %]</button></p>
    [8.2582]
    [8.2715]
    <div class="form-actions">
    <button type="submit" class="btn btn-primary">
    <i class="icon-ok icon-white"></i>
    [%IF create %]Create[% ELSE %]Apply changes[% END %]
    </button>
    [% IF !create %]
    <button id="delete-view" type="submit" class="btn btn-danger" name="submit" value="delete">
    <i class="icon-trash icon-white"></i>
    Delete this view
    </button>
    <script type="text/javascript">
    $("#delete-view").click(function() {
    return confirm("Are you sure you want to delete this view?");
    });
    </script>
    [% END %]
    </div>
  • edit in src/root/edit-view.tt at line 106
    [8.1890][8.2726:2728](),[8.2726][8.2726:2728](),[8.2728][8.1944:1962](),[8.1962][8.10408:10616](),[8.10616][8.2190:2200](),[8.2190][8.2190:2200]()
    [% IF !create %]
    <form action="[% c.uri_for('/view' project.name view.name 'delete') %]" method="post">
    <p><button id="delete-project" type="submit"><img src="/static/images/failure.gif" />Delete this view</button></p>
    </form>
  • edit in src/root/edit-view.tt at line 107
    [8.2201][8.1369:1403](),[8.1403][8.2212:2256](),[8.2212][8.2212:2256](),[8.2256][8.10617:10685](),[8.10685][8.2331:2352](),[8.2331][8.2331:2352](),[8.2352][8.2728:2738](),[8.2728][8.2728:2738](),[8.2738][8.2353:2354]()
    <script type="text/javascript">
    $("#delete-project").click(function() {
    return confirm("Are you sure you want to delete this view?");
    });
    </script>
    [% END %]
  • replacement in src/root/error.tt at line 4
    [8.8539][8.1189:1258]()
    <h1>[% IF httpStatus %][% httpStatus %][% ELSE %]Error[% END %]</h1>
    [8.8539]
    [8.8554]
    <div class="page-header"><h1>[% IF httpStatus %][% httpStatus %][% ELSE %]Error[% END %]</h1></div>
  • replacement in src/root/errors.tt at line 4
    [8.1507][8.1507:1523]()
    <h1>Errors</h1>
    [8.1507]
    [8.1523]
    <div class="page-header"><h1>Errors</h1></div>
  • replacement in src/root/jobset-eval.tt at line 4
    [8.4906][8.2182:2269]()
    <h2>Jobset <tt>[% project.name %]:[% jobset.name %]</tt> evaluation [% eval.id %]</h2>
    [8.4906]
    [8.4993]
    <div class="page-header"><h1>Jobset <tt>[% project.name %]:[% jobset.name %]</tt> evaluation [% eval.id %]</h1></div>
  • replacement in src/root/jobset-evals.tt at line 4
    [8.6444][8.2270:2322]()
    <h2>Evaluations of Jobset <tt>[% INCLUDE renderLink
    [8.6444]
    [8.6496]
    <div class="page-header"><h1>Evaluations of Jobset <tt>[% INCLUDE renderLink
  • replacement in src/root/jobset-evals.tt at line 6
    [8.6574][8.2323:2377]()
    title = project.name %]:[% jobset.name %]</tt></h2>
    [8.6574]
    [8.1993]
    title = project.name %]:[% jobset.name %]</tt></h1></div>
  • replacement in src/root/jobset.tt at line 5
    [8.8640][8.8640:8830]()
    <form action="[% IF create %][% c.uri_for('/project' project.name 'create-jobset/submit') %][% ELSE %][% c.uri_for('/jobset' project.name jobset.name 'submit') %][% END %]" method="post">
    [8.8640]
    [8.8830]
    <form class="form-horizontal" action="[% IF create %][% c.uri_for('/project' project.name 'create-jobset/submit') %][% ELSE %][% c.uri_for('/jobset' project.name jobset.name 'submit') %][% END %]" method="post">
  • replacement in src/root/jobset.tt at line 16
    [8.9049][8.9049:9192]()
    <button type="button" onclick='$(this).parents(".inputalt").remove()'><img src="/static/images/failure.gif" alt="Delete value" /></button>
    [8.9049]
    [8.9192]
    <button type="button" class="btn btn-warning" onclick='$(this).parents(".inputalt").remove()'><i class="icon-trash icon-white"></i></button>
  • replacement in src/root/jobset.tt at line 29
    [8.9472][8.9472:9637]()
    [% IF edit %]<button type="button" onclick='$(this).parents(".input").remove()'><img src="/static/images/failure.gif" alt="Delete input" /></button>[% END -%]
    [8.9472]
    [8.9637]
    [% IF edit %]<button type="button" class="btn btn-warning" onclick='$(this).parents(".input").remove()'><i class="icon-trash icon-white"></i></button>[% END -%]
  • replacement in src/root/jobset.tt at line 45
    [8.10240][8.10240:10345]()
    [% IF edit %]<button type="button" onclick='return false' class="add-inputalt">+</button>[% END %]
    [8.10240]
    [8.10345]
    [% IF edit %]<button type="button" class="add-inputalt btn btn-success" onclick='return false'><i class="icon-plus icon-white"></i></button>[% END %]
  • replacement in src/root/jobset.tt at line 65
    [8.19908][8.19908:20004]()
    <td colspan="3"><button type="button" class="add-input">Add a new input</button></td>
    [8.19908]
    [8.20004]
    <td colspan="3" style="text-align: center;"><button type="button" class="add-input btn btn-success"><i class="icon-plus icon-white"></i> Add a new input</button></td>
  • edit in src/root/jobset.tt at line 82
    [8.20518]
    [8.5238]
  • replacement in src/root/jobset.tt at line 155
    [8.23048][8.23048:23161]()
    [% INCLUDE renderSelection param="enabled" curValue=jobset.enabled options={"1" = "Yes", "0" = "No"} %]
    [8.23048]
    [8.23161]
    [% INCLUDE renderSelection param="enabled" curValue=jobset.enabled radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]
  • replacement in src/root/jobset.tt at line 161
    [8.23250][8.23250:23371]()
    [% INCLUDE renderSelection param="enableemail" curValue=jobset.enableemail options={"1" = "Yes", "0" = "No"} %]
    [8.23250]
    [8.23371]
    [% INCLUDE renderSelection param="enableemail" curValue=jobset.enableemail radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]
  • replacement in src/root/jobset.tt at line 258
    [8.14329][8.14329:14462]()
    <p><button type="submit"><img src="/static/images/success.gif" />[%IF create %]Create[% ELSE %]Apply changes[% END %]</button></p>
    [8.14329]
    [8.14462]
    <p><button type="submit" class="btn btn-primary"><i class="icon-ok icon-white"></i> [%IF create %]Create[% ELSE %]Apply changes[% END %]</button></p>
  • replacement in src/root/jobstatus.tt at line 1
    [8.1907][8.1908:1951]()
    [% WRAPPER layout.tt title="Job Status" %]
    [8.1907]
    [8.1951]
    [% WRAPPER layout.tt title="Job status" %]
  • replacement in src/root/jobstatus.tt at line 4
    [8.1976][8.781:933]()
    <h1>Job Status[% IF project %] of <tt>[% project.name %][% IF jobset %]:[% jobset.name%][% END %][% IF job %]:[% job.name%][% END %]</tt>[% END %]</h1>
    [8.1976]
    [8.1996]
    <div class="page-header"><h1>Job status[% IF project %] of <tt>[% project.name %][% IF jobset %]:[% jobset.name%][% END %][% IF job %]:[% job.name%][% END %]</tt>[% END %]</h1></div>
  • replacement in src/root/layout.tt at line 111
    [8.7375][8.7375:7386]()
    </div>
    [8.7375]
    [8.2274]
    <footer class="navbar">
    <hr />
    <small>
    <em><a href="http://nixos.org/hydra" target="_new">Hydra</a> [% HTML.escape(version) %] (using [% HTML.escape(nixVersion) %]).</em>
    Page generated on [% INCLUDE renderDateTime %].
    [% IF c.user_exists %]
    You are logged in as <tt>[% c.user.username %]</tt>.
    [% END %]
    </small>
    </footer>
  • edit in src/root/layout.tt at line 122
    [8.2275][8.7387:7484](),[8.7484][8.2300:2333](),[8.2300][8.2300:2333](),[8.2333][8.9616:9756](),[8.9756][8.2422:2603](),[8.2422][8.2422:2603](),[8.2603][8.11641:11642](),[8.4904][8.11641:11642](),[8.11641][8.11641:11642]()
    <div class="navbar navbar-fixed-bottom">
    <div id="footer" style="text-align: center;">
    <div id="last-modified">
    <em><a href="http://nixos.org/hydra" target="_new">Hydra</a> [% HTML.escape(version) %] (using [% HTML.escape(nixVersion) %]).</em>
    Page generated on [% INCLUDE renderDateTime %].
    [% IF c.user_exists %]
    You are logged in as <tt>[% c.user.username %]</tt>.
    [% END %]
    </div>
  • replacement in src/root/log.tt at line 4
    [8.11832][8.411:586]()
    <h1>Build log of [% INCLUDE renderFullJobNameOfBuild %] build <a href="[% c.uri_for('/build' build.id) %]">[% build.id %]</a>[%IF step %] step [% step.stepnr %][% END %]</h1>
    [8.11832]
    [8.1194]
    <div class="page-header"><h1>Build log of [% INCLUDE renderFullJobNameOfBuild %] build <a href="[% c.uri_for('/build' build.id) %]">[% build.id %]</a>[%IF step %] step [% step.stepnr %][% END %]</h1></div>
  • edit in src/root/login.tt at line 3
    [8.4525]
    [8.4525]
    <div class="page-header"><h1>Login</h1></div>
  • replacement in src/root/login.tt at line 6
    [8.4526][8.4526:4541]()
    <h1>Login</h1>
    [8.4526]
    [8.4541]
    [% IF errorMsg %]
    <p class="btn-warning btn-large">Error: [% errorMsg %]</p>
    [% END %]
  • replacement in src/root/login.tt at line 11
    [8.4565][8.4565:4569]()
    <p>
    [8.4565]
    [8.4569]
    <p class="btn-info btn-large">
  • edit in src/root/login.tt at line 16
    [8.4708]
    [8.4708]
    <form class="form-horizontal" method="post" action="[% c.uri_for('/login') %]">
  • replacement in src/root/login.tt at line 19
    [8.4709][8.4709:4780]()
    [% IF errorMsg %]
    <p class="error">Error: [% errorMsg %]</p>
    [% END %]
    [8.4709]
    [8.4780]
    <fieldset>
    <div class="control-group">
    <label class="control-label">User name</label>
    <div class="controls">
    <input type="text" class="span3" name="username" value=""></input>
    </div>
    </div>
  • replacement in src/root/login.tt at line 27
    [8.4781][8.4781:4837]()
    <form method="post" action="[% c.uri_for('/login') %]">
    [8.4781]
    [8.4837]
    <div class="control-group">
    <label class="control-label">Password</label>
    <div class="controls">
    <input type="password" class="span3" name="password" value=""></input>
    </div>
    </div>
  • replacement in src/root/login.tt at line 34
    [8.4838][8.4838:5190]()
    <table class="layoutTable">
    <tr>
    <td>Username:</td>
    <td><input type="text" name="username" /></td>
    </tr>
    <tr>
    <td>Password:</td>
    <td><input type="password" name="password" /></td>
    </tr>
    <tr colspan="2">
    <td>
    <input type="submit" name="login" value="Login" />
    </td>
    </tr>
    </table>
    [8.4838]
    [8.5190]
    <div class="form-actions">
    <input type="submit" name="login" value="Login" class="btn btn-primary" />
    </div>
  • replacement in src/root/machine.tt at line 4
    [8.122][8.122:362]()
    <form action="[% IF create %][% c.uri_for('/admin/create-machine/submit') %][% ELSE %][% c.uri_for('/admin/machine' machine.hostname 'submit') %][% END %]" method="post">
    <h2>Machine[% IF ! create %] '[% machine.hostname %]'[% END %]</h2>
    [8.122]
    [8.362]
    <div class="page-header"><h1>[% IF create %]New machine[% ELSE %]Machine <tt>[% machine.hostname %]</tt>[% END %]</h1></div>
    <form class="form-horizontal" method="post"
    action="[% IF create %][% c.uri_for('/admin/create-machine/submit') %][% ELSE %][% c.uri_for('/admin/machine' machine.hostname 'submit') %][% END %]">
  • replacement in src/root/machine.tt at line 9
    [8.363][8.363:391]()
    <table class="layoutTable">
    [8.363]
    [8.391]
    <fieldset>
  • replacement in src/root/machine.tt at line 11
    [8.409][8.409:530]()
    <tr>
    <th>Hostname:</th>
    <td>[% INCLUDE maybeEditString param="hostname" value=machine.hostname %]</td>
    </tr>
    [8.409]
    [8.530]
    <div class="control-group">
    <label class="control-label">Host name</label>
    <div class="controls">
    <input type="text" class="span3" name="hostname" value="[% machine.hostname %]"></input>
    </div>
    </div>
  • replacement in src/root/machine.tt at line 18
    [8.542][8.542:1839]()
    <tr>
    <th>Username:</th>
    <td>[% INCLUDE maybeEditString param="username" value=machine.username %]</td>
    </tr>
    <tr>
    <th>SSH key location:</th>
    <td>[% INCLUDE maybeEditString param="ssh_key" value=machine.ssh_key %]</td>
    </tr>
    <tr>
    <th>Options:</th>
    <td>
    [% INCLUDE maybeEditString param="options" value=machine.options %]
    </td>
    </tr>
    <tr>
    <th>Max concurrent builds:</th>
    <td><tt>[% INCLUDE maybeEditString param="maxconcurrent" value=machine.maxconcurrent %]</tt></td>
    </tr>
    <tr>
    <th>Speed factor:</th>
    <td>
    [% INCLUDE maybeEditString param="speedfactor" value=machine.speedfactor %]
    </td>
    </tr>
    <tr>
    <th>Systems:</th>
    <td>
    <select multiple name="systems" style="width: 27em;">
    [% FOREACH s IN systemtypes %]
    <option value="[% s.system %]"
    [% checked = false %]
    [% FOREACH ms IN machine.buildmachinesystemtypes %]
    [% checked = ms.system == s.system %]
    [% BREAK IF checked %]
    [% END %]
    [% IF checked %]
    SELECTED
    [% END %]
    >[% s.system %]</option>
    [% END %]
    </select>
    </td>
    </tr>
    </table>
    [8.542]
    [8.1839]
    <div class="control-group">
    <label class="control-label">User name</label>
    <div class="controls">
    <input type="text" class="span3" name="username" value="[% machine.username %]"></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">SSH key location</label>
    <div class="controls">
    <input type="text" class="span3" name="ssh_key" value="[% machine.ssh_key %]"></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Options</label>
    <div class="controls">
    <input type="text" class="span3" name="options" value="[% machine.options %]"></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Max concurrent builds</label>
    <div class="controls">
    <input type="text" class="span3" name="maxconcurrent" value="[% machine.maxconcurrent %]"></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Speed factor</label>
    <div class="controls">
    <input type="text" class="span3" name="speedfactor" value="[% machine.speedfactor %]"></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Systems</label>
    <div class="controls">
    <select class="span3" multiple="1" name="systems">
    [% FOREACH s IN systemtypes;
    checked = false;
    FOREACH ms IN machine.buildmachinesystemtypes;
    checked = ms.system == s.system;
    BREAK IF checked;
    END %]
    <option value="[% s.system %]" [% IF checked %]selected="1"[% END %]>[% s.system %]</option>
    [% END %]
    </select>
    </div>
    </div>
  • replacement in src/root/machine.tt at line 70
    [8.1840][8.1840:2425]()
    <p><button type="submit"><img src="/static/images/success.gif" />[%IF create %]Create[% ELSE %]Apply changes[% END %]</button></p>
    </form>
    [% IF !create %]
    <form action="[% c.uri_for('/admin/machine' machine.hostname 'delete') %]" method="post">
    <p><button id="delete-machine" type="submit"><img src="/static/images/failure.gif" />Remove this machine</button></p>
    </form>
    <script type="text/javascript">
    $("#delete-machine").click(function() {
    return confirm("Are you sure you want to delete this machine?");
    });
    </script>
    [% END %]
    [8.1840]
    [8.2425]
    <div class="form-actions">
    <button type="submit" class="btn btn-primary">
    <i class="icon-ok icon-white"></i>
    [%IF create %]Create[% ELSE %]Apply changes[% END %]
    </button>
    [% IF !create %]
    <button id="delete-machine" type="submit" class="btn btn-danger" name="submit" value="delete">
    <i class="icon-trash icon-white"></i>
    Delete this machine
    </button>
    <script type="text/javascript">
    $("#delete-machine").click(function() {
    return confirm("Are you sure you want to delete this machine?");
    });
    </script>
    [% END %]
    </div>
    </fieldset>
  • replacement in src/root/machines.tt at line 4
    [8.2540][8.2540:2564]()
    <h1>Build machines</h1>
    [8.2540]
    [8.2564]
    <div class="page-header"><h1>Build machines</h1></div>
  • replacement in src/root/machines.tt at line 12
    [8.2692][8.2692:2725]()
    <th>Speedfactor</th>
    [8.2692]
    [8.2725]
    <th>Speed factor</th>
  • replacement in src/root/machines.tt at line 20
    [8.3162][8.3162:3308]()
    <td>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('machine_edit'), [m.hostname]) content = m.hostname %]</td>
    [8.3162]
    [8.3308]
    <td><a href="[% c.uri_for(c.controller('Admin').action_for('machine_edit'), [m.hostname]) %]">[% m.hostname %]</a></td>
  • edit in src/root/machines.tt at line 38
    [8.3880][8.3880:3992]()
    <p>[ <a href="[% c.uri_for(c.controller('Admin').action_for('create_machine')) %]">Add a new machine</a> ]</p>
  • edit in src/root/machines.tt at line 39
    [8.3993]
    [8.3993]
    <p><a class="btn" href="[% c.uri_for(c.controller('Admin').action_for('create_machine')) %]"><i class="icon-plus"></i> Add a new machine</a></p>
  • replacement in src/root/news.tt at line 5
    [8.9844][8.9844:9864]()
    <h1>News items</h1>
    [8.9844]
    [8.9864]
    <div class="page-header"><h1>News items</h1></div>
  • replacement in src/root/news.tt at line 18
    [8.10269][8.10269:10474]()
    <td>[ [% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('news_delete') i.id) content = "Delete" confirmmsg = "Are you sure you want to delete this news item?" %] ]</td>
    [8.10269]
    [8.10474]
    <td>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('news_delete') i.id) content = "Delete" confirmmsg = "Are you sure you want to delete this news item?" class = "btn btn-mini btn-danger" %]</td>
  • edit in src/root/news.tt at line 24
    [8.10550][8.10550:10777]()
    <form action="[% c.uri_for('/admin/news/submit') %]" method="post">
    <h2>Add news item</h2>
    <p>
    <textarea class="longString" name="contents"></textarea>
    </p>
    <p>
    <button type="submit">Post</button>
    </p>
  • edit in src/root/news.tt at line 25
    [8.10778]
    [8.10778]
    <form class="form-horizontal" action="[% c.uri_for('/admin/news/submit') %]" method="post">
    <fieldset>
    <legend>Add news item</legend>
    <div class="control-group">
    <label class="control-label">News text (HTML)</label>
    <div class="controls">
    <textarea class="span9" name="contents"></textarea>
    </div>
    </div>
    </fieldset>
    <div class="form-actions">
    <button type="submit" class="btn btn-primary">
    <i class="icon-ok icon-white"></i>
    Post
    </button>
    </div>
  • edit in src/root/news.tt at line 42
    [8.10786][8.10786:10787]()
  • edit in src/root/news.tt at line 43
    [8.10788][8.10788:10789]()
  • replacement in src/root/plain.tt at line 8
    [2.63][2.63:84]()
    <h1>[% title %]</h1>
    [2.63]
    [2.84]
    <div class="page-header"><h1>[% title %]</h1></div>
  • replacement in src/root/project.tt at line 136
    [8.28545][8.28545:28658]()
    [% INCLUDE renderSelection param="enabled" curValue=project.enabled options={"1" = "Yes", "0" = "No"} %]
    [8.28545]
    [8.28658]
    [% INCLUDE renderSelection param="enabled" curValue=project.enabled radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]
  • edit in src/root/project.tt at line 142
    [8.28710][8.28710:28848]()
    <p><button type="submit"><img src="/static/images/success.gif" />[%IF create %]Create[% ELSE %]Apply changes[% END %]</button></p>
  • replacement in src/root/project.tt at line 143
    [8.28851][8.28851:29314]()
    </form>
    [% IF !create %]
    <form action="[% c.uri_for('/project' project.name 'delete') %]" method="post">
    <p><button id="delete-project" type="submit"><img src="/static/images/failure.gif" />Delete this project</button></p>
    </form>
    <script type="text/javascript">
    $("#delete-project").click(function() {
    return confirm("Are you sure you want to delete this project?");
    });
    </script>
    [8.28851]
    [8.29314]
    <p>
    <button type="submit" class="btn btn-primary">
    <i class="icon-ok icon-white"></i>
    [%IF create %]Create[% ELSE %]Apply changes[% END %]
    </button>
    [% IF !create %]
    <button id="delete-project" type="submit" class="btn btn-danger" name="submit" value="delete">
    <i class="icon-trash icon-white"></i>
    Delete this project
    </button>
    <script type="text/javascript">
    $("#delete-project").click(function() {
    return confirm("Are you sure you want to delete this project?");
    });
    </script>
    [% END %]
    </p>
  • edit in src/root/project.tt at line 161
    [8.29317][8.29317:29338]()
    [% END %]
  • edit in src/root/project.tt at line 162
    [8.29352]
    [8.29352]
    </form>
  • replacement in src/root/project.tt at line 180
    [8.29686][8.29686:29771]()
    [<a href="[% c.uri_for('/view' project.name view.name "edit") %]">Edit</a>]
    [8.29686]
    [8.29771]
    <a class="btn btn-mini" href="[% c.uri_for('/view' project.name view.name "edit") %]">Edit</a>
  • replacement in src/root/project.tt at line 191
    [8.29911][8.29911:30010]()
    <p><a href="[% c.uri_for('/project' project.name 'create-view') %]">[Create a new view]</a></p>
    [8.29911]
    [8.30010]
    <p><a class="btn" href="[% c.uri_for('/project' project.name 'create-view') %]">
    <i class="icon-plus"></i> Create a new view
    </a></p>
  • replacement in src/root/queue.tt at line 4
    [8.71][8.71:92]()
    <h1>Hydra Queue</h1>
    [8.71]
    [8.0]
    <div class="page-header"><h1>Hydra queue</h1></div>
  • replacement in src/root/queue.tt at line 6
    [8.1][6.75:147]()
    <p>[ <a href="[% c.uri_for('/status') %]">Running build steps</a> ]</p>
    [8.1]
    [8.2390]
    <p><a class="btn" href="[% c.uri_for('/status') %]">Running build steps</a></p>
  • replacement in src/root/release.tt at line 6
    [8.2301][8.2301:2446]()
    <h1>Release <tt>[% release.name %]</tt> <a
    class="smallLink" href="[% c.uri_for('/release' project.name release.name "edit") %]">[Edit]</a></h1>
    [8.2301]
    [8.2446]
    <div class="page-header"><h1>Release <tt>[% release.name %]</tt>
    <a class="btn" href="[% c.uri_for('/release' project.name release.name "edit") %]"><i class="icon-edit"></i></a></h1></div>
  • replacement in src/root/release.tt at line 20
    [8.1634][8.1634:1641]()
    <h2>
    [8.1634]
    [8.1641]
    <h3>
  • replacement in src/root/release.tt at line 24
    [8.1741][8.1741:1749]()
    </h2>
    [8.1741]
    [8.1749]
    </h3>
  • replacement in src/root/releases.tt at line 5
    [8.3737][8.3737:3795]()
    <h1>Releases for Project <tt>[% project.name %]</tt></h1>
    [8.3737]
    [8.3795]
    <div class="page-header"><h1>Releases for Project <tt>[% project.name %]</tt></h1></div>
  • replacement in src/root/releases.tt at line 36
    [8.1966][8.1966:2066]()
    <p>
    [<a href="[% c.uri_for('/project' project.name 'create-release') %]">Create a release</a>]
    </p>
    [8.1966]
    [8.2066]
    <p><a class="btn" href="[% c.uri_for('/project' project.name 'create-release') %]">
    <i class="icon-plus"></i> Create a release
    </a></p>
  • replacement in src/root/status.tt at line 4
    [8.1222][8.1222:1244]()
    <h1>Hydra Status</h1>
    [8.1222]
    [8.1244]
    <div class="page-header"><h1>Hydra status</h1></div>
  • replacement in src/root/timeline.tt at line 7
    [8.644][8.644:685]()
    <h1>Hydra timeline of last 24 hours</h1>
    [8.644]
    [8.685]
    <div class="page-header"><h1>Hydra timeline of last 24 hours</h1></div>
  • replacement in src/root/topbar.tt at line 90
    [8.13324][5.281:538]()
    [% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('force_eval'), project.name, jobset.name) content = "Evaluate" confirmmsg = ("Are you sure you want to force evaluation of jobset " _ project.name _ ":" _ jobset.name _ "?") %]
    [8.13324]
    [5.538]
    [% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('force_eval'), project.name, jobset.name) content = "Evaluate" confirmmsg = ("Are you sure you want to force evaluation of jobset " _ project.name _ ":" _ jobset.name _ "?") class = "" %]
  • replacement in src/root/topbar.tt at line 117
    [8.14173][8.14173:14413]()
    <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>
    [8.14173]
    [8.14413]
    <li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('users')) content = "Manage users" class = "" %]</li>
    <li>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('news')) content = "Manage news" class = "" %]</li>
  • replacement in src/root/topbar.tt at line 177
    [8.15296][8.15296:15378]()
    confirmmsg = "Are you sure you want to clear the failed builds cache?" %]
    [8.15296]
    [8.15378]
    confirmmsg = "Are you sure you want to clear the failed builds cache?"
    class = "" %]
  • replacement in src/root/topbar.tt at line 182
    [8.15556][8.15556:15622]()
    confirmmsg = "Are you sure you want to clear the queue?"
    [8.15556]
    [8.15622]
    confirmmsg = "Are you sure you want to clear the queue?"
    class = ""
  • replacement in src/root/user.tt at line 17
    [8.5044][8.5044:5206]()
    <form action="[% IF create %][% c.uri_for('/admin/create-user/submit') %][% ELSE %][% c.uri_for('/admin/user' user.username 'submit') %][% END %]" method="post">
    [8.5044]
    [8.5206]
    <div class="page-header"><h1>[% IF create %]New user[% ELSE %]User <tt>[% user.username %]</tt>[% END %]</h1></div>
  • replacement in src/root/user.tt at line 19
    [8.5207][8.5207:5298]()
    <h2>User[% IF ! create %] '[% user.username %]'[% END %]</h2>
    <table class="layoutTable">
    [8.5207]
    [8.5298]
    <form class="form-horizontal" action="[% IF create %][% c.uri_for('/admin/create-user/submit') %][% ELSE %][% c.uri_for('/admin/user' user.username 'submit') %][% END %]" method="post">
    <fieldset>
  • replacement in src/root/user.tt at line 23
    [8.5316][8.5316:5434]()
    <tr>
    <th>Username:</th>
    <td>[% INCLUDE maybeEditString param="username" value=user.username %]</td>
    </tr>
    [8.5316]
    [8.5434]
    <div class="control-group">
    <label class="control-label">User name</label>
    <div class="controls">
    <input type="text" class="span3" name="username" value=""></input>
    </div>
    </div>
  • replacement in src/root/user.tt at line 30
    [8.5446][8.5446:6137]()
    <tr>
    <th>Full name:</th>
    <td>[% INCLUDE maybeEditString param="fullname" value=user.fullname %]</td>
    </tr>
    <tr>
    <th>Email:</th>
    <td>[% INCLUDE maybeEditString param="emailaddress" value=user.emailaddress %]</td>
    </tr>
    <tr>
    <th>Evaluation error notifications:</th>
    <td>
    [% INCLUDE renderSelection param="emailonerror" curValue=user.emailonerror options={"1" = "Yes", "0" = "No"} %]
    </td>
    </tr>
    <tr>
    <th>Roles:</th>
    <td>
    <select multiple name="roles" style="width: 27em;">
    [% INCLUDE roleoption role="admin" %]
    [% INCLUDE roleoption role="create-project" %]
    </select>
    </td>
    </tr>
    </table>
    [8.5446]
    [8.6137]
    <div class="control-group">
    <label class="control-label">Full name</label>
    <div class="controls">
    <input type="text" class="span3" name="fullname" [% HTML.attributes(value => user.fullname) %]></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Email</label>
    <div class="controls">
    <input type="text" class="span3" name="emailaddress" [% HTML.attributes(value => user.emailaddress) %]></input>
    </div>
    </div>
    <div class="control-group">
    <label class="control-label">Evaluation error notifications</label>
    [% INCLUDE renderSelection param="emailonerror" curValue=user.emailonerror radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]
    </div>
    <div class="control-group">
    <label class="control-label">Roles</label>
    <div class="controls">
    <select multiple name="roles" class="span3">
    [% INCLUDE roleoption role="admin" %]
    [% INCLUDE roleoption role="create-project" %]
    </select>
    </div>
    </div>
  • replacement in src/root/user.tt at line 56
    [8.6138][8.6138:6269]()
    <p><button type="submit"><img src="/static/images/success.gif" />[%IF create %]Create[% ELSE %]Apply changes[% END %]</button></p>
    [8.6138]
    [8.6269]
    <div class="form-actions">
    <button type="submit" class="btn btn-primary">
    <i class="icon-ok icon-white"></i>
    [%IF create %]Create[% ELSE %]Apply changes[% END %]
    </button>
    [% IF !create %]
    <button id="delete-user" type="submit" class="btn btn-danger" name="submit" value="delete">
    <i class="icon-trash icon-white"></i>
    Delete this user
    </button>
    <script type="text/javascript">
    $("#delete-user").click(function() {
    return confirm("Are you sure you want to delete this user?");
    });
    </script>
    [% END %]
    </div>
    </p>
  • edit in src/root/user.tt at line 76
    [8.6278][8.6278:6705]()
    [% IF !create %]
    <form action="[% c.uri_for('/admin/user' user.hostname 'delete') %]" method="post">
    <p><button id="delete-user" type="submit"><img src="/static/images/failure.gif" />Remove this user</button></p>
    </form>
    <script type="text/javascript">
    $("#delete-user").click(function() {
    return confirm("Are you sure you want to delete this user?");
    });
    </script>
    [% END %]
  • replacement in src/root/users.tt at line 4
    [8.6814][8.6814:6829]()
    <h1>Users</h1>
    [8.6814]
    [8.6829]
    <div class="page-header"><h1>Users</h1></div>
  • replacement in src/root/users.tt at line 20
    [8.7128][8.7128:7271]()
    <td>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('user_edit'), [u.username]) content = u.username %]</td>
    [8.7128]
    [8.7271]
    <td><a href="[% c.uri_for(c.controller('Admin').action_for('user_edit'), [u.username]) %]">[% u.username %]</a></td>
  • replacement in src/root/users.tt at line 25
    [8.7501][8.7501:7733]()
    <td>[ [% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('reset_password'), [u.username]) content = "Reset password" confirmmsg = "Are you sure you want to reset the password for this user?" %] ]</td>
    [8.7501]
    [8.7733]
    <td>[% INCLUDE maybeLink uri = c.uri_for(c.controller('Admin').action_for('reset_password'), [u.username]) content = "Reset password" confirmmsg = "Are you sure you want to reset the password for this user?" class = "btn btn-mini" %]</td>
  • replacement in src/root/users.tt at line 32
    [8.7793][8.7793:7898]()
    <p>[ <a href="[% c.uri_for(c.controller('Admin').action_for('create_user')) %]">Add a new user</a> ]</p>
    [8.7793]
    [8.7898]
    <p><a class="btn" href="[% c.uri_for(c.controller('Admin').action_for('create_user')) %]">
    <i class="icon-plus"></i> Add a new user
    </a></p>
  • replacement in src/root/view-result.tt at line 7
    [8.7430][8.3232:3390]()
    <h1>View <tt>[% view.project.name %]:[% view.name %]</tt> result [% result.id %][% IF result.releasename %] (<tt>[% result.releasename %]</tt>)[% END %]</h1>
    [8.7430]
    [8.91]
    <div class="page-header"><h1>View <tt>[% view.project.name %]:[% view.name %]</tt> result [% result.id %][% IF result.releasename %] (<tt>[% result.releasename %]</tt>)[% END %]</h1></div>
  • edit in src/root/view-result.tt at line 48
    [8.8271]
    [8.1405]
    <br />
  • replacement in src/root/view-result.tt at line 55
    [8.1444][8.1444:1536]()
    [<a href="[% c.uri_for('/view' project.name view.name result.id 'release') %]">Release</a>]
    [8.1444]
    [8.1536]
    <a class="btn" href="[% c.uri_for('/view' project.name view.name result.id 'release') %]">Release</a>
  • replacement in src/root/view.tt at line 5
    [8.8536][8.11263:11326]()
    <h1>View <tt>[% view.project.name %]:[% view.name %]</tt></h1>
    [8.8536]
    [8.747]
    <div class="page-header"><h1>View <tt>[% view.project.name %]:[% view.name %]</tt></h1></div>
  • replacement in src/root/view.tt at line 8
    [8.1077][8.11327:11483]()
    [<a href="[% c.uri_for('/view' project.name view.name "edit") %]">Edit</a>]
    [<a href="[% c.uri_for('/view' project.name view.name "latest") %]">Latest</a>]
    [8.1077]
    [8.1258]
    <a class="btn" href="[% c.uri_for('/view' project.name view.name "edit") %]"><i class="icon-edit"></i> Edit</a>
    <a class="btn" href="[% c.uri_for('/view' project.name view.name "latest") %]"><i class="icon-share-alt"></i> Latest</a>
  • edit in src/root/view.tt at line 68
    [8.16032]
    [8.16032]
    [% IF page > 1 %]
  • edit in src/root/view.tt at line 70
    [8.16116]
    [8.16116]
    [% END %]
    [% IF page * resultsPerPage < totalResults %]
  • edit in src/root/view.tt at line 73
    [8.16196]
    [8.16196]
    [% END %]