summaryrefslogtreecommitdiff
path: root/modules/server_add/js/server_add.js
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-03-04 15:46:10 +0000
committerTim Almdal <tnalmdal@shaw.ca>2009-03-04 15:46:10 +0000
commitf7d82ec52f533c620c94fe0327175747cc3d8877 (patch)
treea4fdc5d31e700036083e11f31f17c8fca6cccd60 /modules/server_add/js/server_add.js
parentf16224ae828e43204cf334681941c27f179e09c3 (diff)
Rename local_import module to server_add
Diffstat (limited to 'modules/server_add/js/server_add.js')
-rw-r--r--modules/server_add/js/server_add.js131
1 files changed, 131 insertions, 0 deletions
diff --git a/modules/server_add/js/server_add.js b/modules/server_add/js/server_add.js
new file mode 100644
index 00000000..fe8c976a
--- /dev/null
+++ b/modules/server_add/js/server_add.js
@@ -0,0 +1,131 @@
+$("#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 + "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 + "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 + "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);
+}
+