diff options
author | Tim Almdal <tnalmdal@shaw.ca> | 2009-03-04 15:46:10 +0000 |
---|---|---|
committer | Tim Almdal <tnalmdal@shaw.ca> | 2009-03-04 15:46:10 +0000 |
commit | f7d82ec52f533c620c94fe0327175747cc3d8877 (patch) | |
tree | a4fdc5d31e700036083e11f31f17c8fca6cccd60 /modules/server_add/js/server_add.js | |
parent | f16224ae828e43204cf334681941c27f179e09c3 (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.js | 131 |
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); +} + |