Skip to content

Instantly share code, notes, and snippets.

@ggoodman
Created February 17, 2012 05:19
Show Gist options
  • Save ggoodman/1850886 to your computer and use it in GitHub Desktop.
Save ggoodman/1850886 to your computer and use it in GitHub Desktop.
Plunker Testing Script
<!DOCTYPE html><html><head><title>Plunker testbed</title><link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css"><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script type="text/javascript">
(function() {
$(function() {
var addFile, buildPlunk, loadPlunk;
addFile = (function() {
var counter;
counter = 0;
return function(file) {
var $content, $controls, $delete, $fieldset, $filename, $input, $label;
if (file == null) {
file = {
filename: "",
content: ""
};
}
counter++;
$fieldset = $("<fieldset></fieldset>").addClass("plunk-file");
$filename = $("<div>").addClass("control-group").appendTo($fieldset);
$label = $("<label>Filename</label>").addClass("control-label").attr("for", "files-" + counter + "-filename").appendTo($filename);
$controls = $("<div>").addClass("controls").appendTo($filename);
$input = $("<input>").addClass("plunk-filename").addClass("input-xlarge").attr("id", "files-" + counter + "-filename").attr("placeholder", "filename.ext").appendTo($controls).val(file.filename);
$delete = $("<button>Delete</button>").addClass("remove-file").addClass("btn").addClass("btn-danger").appendTo($controls);
$content = $("<div>").addClass("control-group").appendTo($fieldset);
$label = $("<label>Content</label>").addClass("control-label").attr("for", "files-" + counter + "-content").appendTo($content);
$controls = $("<div>").addClass("controls").appendTo($content);
$input = $("<textarea>").addClass("plunk-content").addClass("input-xxlarge").attr("id", "files-" + counter + "-content").attr("rows", "5").appendTo($controls).val(file.content);
return $fieldset.appendTo("#plunk-files");
};
})();
loadPlunk = function(plunk) {
var file, filename, _ref, _results;
$("#plunk-id").val(plunk.id);
$("#plunk-description").val(plunk.description);
$("#plunk-index").val(plunk.index);
_ref = plunk.files;
_results = [];
for (filename in _ref) {
file = _ref[filename];
_results.push(addFile(file));
}
return _results;
};
buildPlunk = function() {
var plunk;
plunk = {
id: $("#plunk-id").val(),
description: $("#plunk-description").val(),
index: $("#plunk-index").val(),
files: {}
};
$("fieldset.plunk-file").each(function(el) {
var filename;
if (filename = $("input.plunk-filename", el).val()) {
return plunk.files[filename] = $("textarea.plunk-content", el).val();
}
});
return plunk;
};
$("#search").on("reset", function(e) {
return $("#plunk :input").val();
});
$("#search").on("submit", function(e) {
var id;
e.preventDefault();
$("input", this).removeClass("error");
if (id = $("input", this).val()) {
return $.ajax("/api/v1/plunks/" + id, {
type: "get",
success: loadPlunk,
error: function() {
return $("#search input").addClass("error");
}
});
}
});
$("#add-file").on("click", function(e) {
e.preventDefault();
return addFile();
});
$("#plunk-files").on("click", ".remove-file", function(e) {
e.preventDefault();
return $(e.target).parents("fieldset").remove();
});
return $("#update").on("click", function(e) {
var plunk, url;
e.preventDefault();
plunk = buildPlunk();
url = "/api/v1/plunks";
if (plunk.id) url += "/" + plunk.id;
return $.ajax(url, {
type: "post",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(plunk),
success: loadPlunk
});
});
});
}).call(this);
</script></head><body style="padding-top: 60px"><div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container"><a href="./" class="brand">Plunker tester</a><form id="search" class="navbar-search pull-right"><input placeholder="Plunk ID" class="search-query"><input type="reset"></form></div></div></div><div class="container"><div class="row"><div class="span12"><form id="plunk" class="form-horizontal"><input id="plunk-id" type="hidden"><fieldset><legend>Plunk info</legend><div class="control-group plunk-description"><label for="plunk-description" class="control-label">Plunk ID</label><div class="controls"><input id="plunk-description" placeholder="Plunk description" class="input-xlarge"><span class="help-inline">Optional</span></div></div><div class="control-group plunk-index"><label for="plunk-iindex" class="control-label">Index file</label><div class="controls"><input id="plunk-index" placeholder="index.html" class="input-small"><span class="help-inline">Optional</span><p class="help-block">This will default to index.html or the first .html file or otherwise an arbitrary file</p></div></div></fieldset><div id="plunk-files"></div><fieldset><div class="control-group"><div class="controls"><button id="add-file" class="btn btn-success">Add file</button></div></div></fieldset><fieldset><div class="form-actions"><button id="update" class="btn">Update</button></div></fieldset></form></div></div></div></body></html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment