mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-05-20 03:19:13 -04:00
files out in a separate model for scalability. Removed the "pause" functionality. - Server_Add_Controller extends Admin_Controller so that we don't have to check for admin every time. - Task completion time now factors in the time it takes to walk the arbitrarily deep trees - Moved checkbox management entirely into JS using jQuery - Simplified the JS considerably
92 lines
2.6 KiB
JavaScript
92 lines
2.6 KiB
JavaScript
/**
|
|
* We've clicked the + icon next to a directory. Load up children of this
|
|
* directory from the server and display them.
|
|
*/
|
|
function open_close_branch(path, id) {
|
|
var parent = $("#file_" + id);
|
|
var children = $("#tree_" + id);
|
|
var icon = parent.find(".ui-icon:first");
|
|
|
|
if (!children.html()) {
|
|
parent.addClass("gLoadingSmall");
|
|
$.ajax({
|
|
url: GET_CHILDREN_URL.replace("__PATH__", path),
|
|
success: function(data, textStatus) {
|
|
children.html(data);
|
|
parent.removeClass("gLoadingSmall");
|
|
|
|
// Propagate checkbox value
|
|
children.find("input[type=checkbox]").attr(
|
|
"checked", parent.find("input[type=checkbox]:first").attr("checked"));
|
|
}
|
|
});
|
|
}
|
|
|
|
children.slideToggle("fast", function() {
|
|
if (children.is(":hidden")) {
|
|
icon.addClass("ui-icon-plus");
|
|
icon.removeClass("ui-icon-minus");
|
|
} else {
|
|
icon.addClass("ui-icon-minus");
|
|
icon.removeClass("ui-icon-plus");
|
|
parent.removeClass("gCollapsed");
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* We've clicked a checkbox. Propagate the value downwards as necessary.
|
|
*/
|
|
function click_node(checkbox) {
|
|
var parent = $(checkbox).parents("li").get(0);
|
|
var checked = $(checkbox).attr("checked");
|
|
$(parent).find("input[type=checkbox]").attr("checked", checked);
|
|
|
|
// @todo if we uncheck all the children for a parent, we should uncheck the
|
|
// parent itself, otherwise in the code we'll add the entire parent since if
|
|
// we find an album as a leaf, we assume that it's never been expanded in the UI.
|
|
if ($("#gServerAddTree").find("input[type=checkbox]").is(":checked")) {
|
|
$("#gServerAddAddButton").enable(true);
|
|
$("#gServerAddAddButton").removeClass("ui-state-disabled");
|
|
} else {
|
|
$("#gServerAddAddButton").enable(false);
|
|
$("#gServerAddAddButton").addClass("ui-state-disabled");
|
|
}
|
|
}
|
|
|
|
function start_add() {
|
|
var paths = [];
|
|
$.each($("#gServerAdd :checkbox[checked]"), function () {
|
|
paths.push(this.value);
|
|
});
|
|
$.ajax({
|
|
url: START_URL,
|
|
type: "POST",
|
|
async: false,
|
|
data: { "paths[]": paths },
|
|
dataType: "json",
|
|
success: function(data, textStatus) {
|
|
$("#gServerAdd .gProgressBar").progressbar("value", data.percent_complete);
|
|
setTimeout(function() { run_add(data.url); }, 0);
|
|
}
|
|
});
|
|
return false;
|
|
}
|
|
|
|
function run_add(url) {
|
|
$.ajax({
|
|
url: url,
|
|
async: false,
|
|
dataType: "json",
|
|
success: function(data, textStatus) {
|
|
$("#gServerAdd .gProgressBar").progressbar("value", data.percent_complete);
|
|
if (data.done) {
|
|
$("#gServerAdd .gProgressBar").slideUp();
|
|
} else {
|
|
setTimeout(function() { run_add(url); }, 0);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|