luci-app-attendedsysupgrade: use JSON.stringify
[project/luci.git] / applications / luci-app-attendedsysupgrade / luasrc / view / attendedsysupgrade.htm
index 759949d..1edafa7 100644 (file)
@@ -6,6 +6,12 @@
 </div>
 <input class="cbi-button" value="search for updates" onclick="update_request()" type="button" id="update_button">
 <div style="display: none" id="packages" class="alert-message success"></div>
+<div class="cbi-value" id="keep_container" style="display: none">
+       <label class="cbi-value-title" for="keep">keep settings:</label>
+       <div class="cbi-value-field">
+               <input type="checkbox" name="keep" id="keep" checked="checked" />
+       </div>
+</div>
 
 <script type="text/javascript">
 
@@ -35,7 +41,11 @@ function server_request(request_dict, path, callback) {
 
 // requests ubus via rpcd
 function ubus_request(command, argument, params, callback) {
-       var request_data = '{ "jsonrpc": "2.0", "id": ' + ubus_counter + ', "method": "call", "params": [ "'+ data["ubus_rpc_session"] +'", "' + command + '", "' + argument + '", ' + params + ' ] }'
+       request_data = {};
+       request_data.jsonrpc = "2.0";
+       request_data.id = ubus_counter;
+       request_data.method = "call";
+       request_data.params = [ data.ubus_rpc_session, command, argument, params ]
        ubus_counter++
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("POST", ubus_url, true);
@@ -50,7 +60,7 @@ function ubus_request(command, argument, params, callback) {
                        ubus_request_callback(xmlhttp, callback)
                }
        });
-       xmlhttp.send(request_data);
+       xmlhttp.send(JSON.stringify(request_data));
 }
 
 // handle ubus_requests, set variables or perform functions
@@ -81,10 +91,11 @@ function ubus_request_callback_uci(response_object, callback) {
 // initial setup, get system information
 function setup() {
        data["ubus_rpc_session"] = "<%=luci.dispatcher.context.authsession%>"
-       ubus_request("packagelist", "list", '{  }', "packagelist")
-       ubus_request("system", "board", '{  }', "release")
-       ubus_request("system", "board", '{  }', "board_name")
-       ubus_request("uci", "get", '{"config": "attendedsysupgrade", "section": "@settings[0]", "option": "update_server"}', "update_server")
+       ubus_request("packagelist", "list", {}, "packagelist");
+       ubus_request("system", "board", {}, "release");
+       ubus_request("system", "board", {}, "board_name");
+       ubus_request("system", "board", {}, "model");
+       ubus_request("uci", "get", { "config": "attendedsysupgrade", "section": "updateserver", "option": "url" }, "update_server")
 }
 
 // shows notification if update is available
@@ -142,7 +153,7 @@ function update_request_callback(response_object) {
 }
 
 function back_online() {
-       ubus_request("session", "login", '{  }', back_online_callback)
+       ubus_request("session", "login", {}, back_online_callback)
 }
 
 function back_online_callback(response_object) {
@@ -182,6 +193,7 @@ function image_request() {
        request_dict.version = latest_version;
        request_dict.board = data.board_name
        request_dict.packages = data.packages;
+       request_dict.model = data.model
        server_request(request_dict, "image-request", image_request_handler)
 }
 
@@ -217,6 +229,7 @@ function image_request_handler(response) {
                update_info("image created")
                document.getElementById("update_button").value = "sysupgrade"
                document.getElementById("update_button").onclick = function() {download_image(response_content.url); }
+               document.getElementById("keep_container").style.display = "block";
        }
 }
 
@@ -234,7 +247,8 @@ function upload_image(blob) {
        upload_request.addEventListener('load', function(event) {
                // this checksum should be parsed
                document.getElementById("update_info").innerHTML = "flashing... please wait" // show fancy indicator http://www.ajaxload.info/
-               ubus_request("attendedsysupgrade", "sysupgrade", '{  }', 'done');
+
+               ubus_request("attendedsysupgrade", "sysupgrade", { "keep_settings": document.getElementById("keep").checked }, 'done');
        });
 
        upload_request.addEventListener('error', function(event) {