2012-01-11 17:04:20 +01:00
|
|
|
$(document).ready(function() {
|
2012-01-12 13:22:52 +01:00
|
|
|
// Handlers for showing/hiding the upload dialog via buttons & keys.
|
2012-01-11 17:04:20 +01:00
|
|
|
$("#add").click(show_add_dialog);
|
|
|
|
$("#add_form #cancel").click(hide_add_dialog);
|
2012-01-12 13:22:52 +01:00
|
|
|
if ($.browser.mozilla) {
|
|
|
|
$(document).keypress(key_handler);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$(document).keyup(key_handler);
|
|
|
|
}
|
2012-01-11 23:31:07 +01:00
|
|
|
|
2012-01-12 13:22:52 +01:00
|
|
|
// Populate the canvas with the draggables.
|
2012-01-12 11:38:40 +01:00
|
|
|
$.get("draggables", function(data) {
|
2012-01-15 17:15:10 +01:00
|
|
|
var last_drag;
|
2012-01-11 23:31:07 +01:00
|
|
|
$.each(data, function(key, val) {
|
2012-01-12 11:38:40 +01:00
|
|
|
$.get("draggables/" + key, function(data) {
|
2012-01-11 23:31:07 +01:00
|
|
|
$("#draggables").append(data);
|
2012-01-15 17:15:10 +01:00
|
|
|
// Assume we have appended one draggable here:
|
|
|
|
last_drag = $(".draggable").last();
|
|
|
|
last_drag.draggable({ stack: ".draggable",
|
|
|
|
containment: "window",
|
|
|
|
stop: update_drag_info });
|
|
|
|
last_drag.find(".delete").click({ id: last_drag[0].id,
|
|
|
|
element: last_drag },
|
|
|
|
delete_draggable);
|
|
|
|
// Highlight contained code.
|
|
|
|
last_drag.find("pre code").each(function(idx, elem) {
|
2012-01-12 14:22:25 +01:00
|
|
|
hljs.highlightBlock(elem, ' ');
|
|
|
|
});
|
2012-01-11 23:31:07 +01:00
|
|
|
})
|
|
|
|
})
|
|
|
|
}, "json");
|
2012-01-11 17:04:20 +01:00
|
|
|
});
|
|
|
|
|
2012-01-12 13:22:52 +01:00
|
|
|
// Callback functions.
|
2012-01-11 17:04:20 +01:00
|
|
|
function show_add_dialog() {
|
2012-01-11 23:26:40 +01:00
|
|
|
$('#add_dialog').fadeIn('slow');
|
2012-01-15 17:15:10 +01:00
|
|
|
}
|
2012-01-11 17:04:20 +01:00
|
|
|
|
|
|
|
function hide_add_dialog() {
|
2012-01-11 23:26:40 +01:00
|
|
|
$("#add_dialog").fadeOut('fast', function() {
|
2012-01-11 17:04:20 +01:00
|
|
|
$("#add_form")[0].reset();
|
|
|
|
});
|
2012-01-15 17:15:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function delete_draggable(event) {
|
|
|
|
drag_id = event.data.id
|
|
|
|
$.post("draggables/" + drag_id, {"_method": "delete"}, function(data) {
|
|
|
|
if (data)
|
|
|
|
event.data.element.remove();
|
|
|
|
}, "json");
|
|
|
|
}
|
2012-01-11 23:31:07 +01:00
|
|
|
|
|
|
|
function update_drag_info(event, ui) {
|
2012-01-13 10:43:47 +01:00
|
|
|
$.post("draggables/" + ui.helper.context.id, ui.position, "json");
|
2012-01-11 23:31:07 +01:00
|
|
|
}
|
2012-01-12 13:22:52 +01:00
|
|
|
|
|
|
|
function key_handler(event) {
|
|
|
|
switch (event.keyCode) {
|
|
|
|
case 27: /* Escape */
|
|
|
|
hide_add_dialog();
|
|
|
|
break;
|
|
|
|
case 16: /* Plus */
|
|
|
|
case 187: /* Plus (numpad) */
|
|
|
|
show_add_dialog();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|