ad13d13436
This makes it possible to create declarative projects via a PUT request, and also exposes the currently-configured values to GET requests.
112 lines
4 KiB
Plaintext
112 lines
4 KiB
Plaintext
[% WRAPPER layout.tt title=(create ? "New project" : "Editing project $project.name") %]
|
|
[% PROCESS common.tt %]
|
|
|
|
<form>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectenabled">Enabled</label>
|
|
<div class="col-sm-9">
|
|
<input type="checkbox" id="editprojectenabled" name="enabled" [% IF create || project.enabled %] checked="checked" [% END %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectvisible">Visible in projects list</label>
|
|
<div class="col-sm-9">
|
|
<input type="checkbox" id="editprojectvisible" name="visible" [% IF !project.hidden %] checked="checked" [% END %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectidentifier">Identifier</label>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="editprojectidentifier" name="name" [% HTML.attributes(value => project.name) %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectdisplayname">Display name</label>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="editprojectdisplayname" name="displayname" [% HTML.attributes(value => project.displayname) %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectdescription">Description</label>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="editprojectdescription" name="description" [% HTML.attributes(value => project.description) %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojecthomepage">Homepage</label>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="editprojecthomepage" name="homepage" [% HTML.attributes(value => project.homepage) %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectowner">Owner</label>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="editprojectowner" name="owner" [% HTML.attributes(value => project.owner.username || c.user.username) %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectdeclfile">
|
|
Declarative spec file
|
|
<small class="form-text text-muted">(Leave blank for non-declarative project configuration)</small>
|
|
</label>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="editprojectdeclfile" name="declfile" [% HTML.attributes(value => project.declfile) %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label class="col-sm-3" for="editprojectdeclvalue">Declarative input type</label>
|
|
<div class="col-sm-9">
|
|
[% INCLUDE renderSelection param="decltype" options=inputTypes edit=1 curValue=project.decltype %]
|
|
<input type="text" class="form-control" id="editprojectdeclvalue" name="declvalue" [% HTML.attributes(value => project.declvalue) %]/>
|
|
</div>
|
|
</div>
|
|
|
|
<button id="submit-project" type="submit" class="btn btn-primary">
|
|
<i class="fas fa-check"></i>
|
|
[%IF create %]Create project[% ELSE %]Apply changes[% END %]
|
|
</button>
|
|
|
|
</form>
|
|
|
|
<script type="text/javascript">
|
|
$("#submit-project").click(function() {
|
|
var formElements = $(this).parents("form").serializeArray();
|
|
var data = { 'declarative': {} };
|
|
var decl = {};
|
|
for (var i = 0; formElements.length > i; i++) {
|
|
var elem = formElements[i];
|
|
var match = elem.name.match(/^decl(file|type|value)$/);
|
|
if (match === null) {
|
|
data[elem.name] = elem.value;
|
|
} else {
|
|
var param = match[1];
|
|
decl[param] = elem.value;
|
|
}
|
|
}
|
|
data.declarative = decl;
|
|
redirectJSON({
|
|
[% IF create %]
|
|
url: "[% c.uri_for('/project' '.new') %]",
|
|
[% ELSE %]
|
|
url: "[% c.uri_for('/project' project.name) %]",
|
|
[% END %]
|
|
data: JSON.stringify(data),
|
|
contentType: 'application/json',
|
|
type: 'PUT'
|
|
});
|
|
return false;
|
|
});
|
|
</script>
|
|
|
|
|
|
[% END %]
|