mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-05-20 03:19:13 -04:00
132 lines
4.1 KiB
JavaScript
132 lines
4.1 KiB
JavaScript
$("#gServerAdd").ready(function() {
|
|
$("#gServerAdd :submit").click(function(event) {
|
|
do_add(this, event);
|
|
});
|
|
$("#gProgressBar").progressbar();
|
|
$("#gServerAdd ul").css("display", "block");
|
|
});
|
|
|
|
function open_close_branch(icon, event) {
|
|
var parent = icon.parentNode;
|
|
var children = $(parent).find(".gCheckboxTree");
|
|
var closed = $(icon).hasClass("ui-icon-plus");
|
|
|
|
if (closed) {
|
|
if (children.length == 0) {
|
|
load_children(icon, function(data, textStatus) {
|
|
$(parent).append(data);
|
|
$(icon).addClass("ui-icon-minus");
|
|
$(icon).removeClass("ui-icon-plus");
|
|
var checkbox = $(parent).find(":checkbox")[0];
|
|
checkbox_click(checkbox, null);
|
|
});
|
|
} else {
|
|
$(icon).addClass("ui-icon-minus");
|
|
$(icon).removeClass("ui-icon-plus");
|
|
}
|
|
$(parent).children("ul").slideDown("fast");
|
|
} else {
|
|
$(icon).addClass("ui-icon-plus");
|
|
$(icon).removeClass("ui-icon-minus");
|
|
$(parent).children("ul").slideUp("fast");
|
|
}
|
|
}
|
|
|
|
function checkbox_click(checkbox, event) {
|
|
var parents = $(checkbox).parents("li");
|
|
var parent = parents.get(0);
|
|
$(parent).find(".gCheckboxTree :checkbox").attr("checked", checkbox.checked);
|
|
var checked = $("#gServerAdd :checkbox[checked]");
|
|
$("#gServerAdd form :submit").attr("disabled", checked.length == 0);
|
|
}
|
|
|
|
function load_children(icon, callback) {
|
|
var csrf = $("#gServerAdd form :hidden[name='csrf']")[0].value;
|
|
var base_url = $("#gServerAdd form :hidden[name='base_url']")[0].value;
|
|
var parms = "&csrf=" + csrf;
|
|
var parents = $(icon).parents("li");
|
|
for (var i=parents.length - 1; i >= 0; i--) {
|
|
parms += "&path[]=" + $(parents[i]).children("span").attr("ref");
|
|
}
|
|
$.ajax({async: false,
|
|
success: callback,
|
|
data: parms,
|
|
dataType: "html",
|
|
type: "POST",
|
|
url: base_url.replace("__ARGS__", "server_add/children")
|
|
});
|
|
}
|
|
|
|
var current = 0;
|
|
var process_length = 0;
|
|
function do_add(submit, event) {
|
|
event.preventDefault();
|
|
$("#gProgressBar").progressbar("value", 0);
|
|
$("#gProgressBar").css("visibility", "visible");
|
|
var check_list = $("#gServerAdd :checkbox[checked]");
|
|
process_length = check_list.length;
|
|
current = 0;
|
|
var base_url = $("#gServerAdd form :hidden[name='base_url']")[0].value;
|
|
$.ajax({async: false,
|
|
dataType: "json",
|
|
type: "POST",
|
|
url: base_url.replace("__ARGS__", "server_add/start")
|
|
});
|
|
$.each(check_list, function () {
|
|
process_checkbox(this);
|
|
});
|
|
$.ajax({async: false,
|
|
success: function(data, textStatus) {
|
|
document.location.reload();
|
|
},
|
|
dataType: "json",
|
|
type: "POST",
|
|
url: base_url.replace("__ARGS__", "server_add/finish")
|
|
});
|
|
return false;
|
|
}
|
|
|
|
function process_checkbox(checkbox) {
|
|
var parents = $(checkbox).parents("li");
|
|
var csrf = $("#gServerAdd form :hidden[name='csrf']")[0].value;
|
|
var parms = "&csrf=" + csrf;
|
|
for (var i=parents.length - 1; i > 0; i--) {
|
|
parms += "&path[]=" + $(parents[i]).children("span").attr("ref");
|
|
}
|
|
parms += "&path[]=" + $(checkbox).val();
|
|
|
|
var parent = parents[0];
|
|
if ($(parent).hasClass("gFile")) {
|
|
process_file(parents[0], parms);
|
|
} else if ($(parent).hasClass("gDirectory") && $(parents[0]).find(".gCheckboxTree").length == 0) {
|
|
// If it is a directory and retrieve the children and process them
|
|
var icon = $(parent).children("span")[0];
|
|
load_children(icon, function(data, textStatus) {
|
|
$(parent).append(data);
|
|
$(icon).addClass("ui-icon-plus");
|
|
checkbox_click(checkbox, null);
|
|
var boxes = $(parent).find(".gCheckboxTree :checkbox[checked]");
|
|
process_length += boxes.length;
|
|
$.each(boxes, function () {
|
|
process_checkbox(this);
|
|
});
|
|
});
|
|
current++;
|
|
$("#gProgressBar").progressbar("value", current / process_length * 100);
|
|
}
|
|
}
|
|
|
|
function process_file(li_element, parms) {
|
|
$.ajax({async: false,
|
|
success: function(data, status) {
|
|
},
|
|
data: parms,
|
|
dataType: "html",
|
|
type: "POST",
|
|
url: $("#gServerAdd form").attr("action")
|
|
});
|
|
current++;
|
|
$("#gProgressBar").progressbar("value", current / process_length * 100);
|
|
}
|
|
|