luci-app-ddns: modified to support ddns-scripts 2.1.0-2
[project/luci.git] / applications / luci-ddns / luasrc / view / ddns / system_status.htm
index d2c2b7e..db9d1d1 100644 (file)
 
 <!-- ++ BEGIN ++ Dynamic DNS ++ system_status.htm ++ -->
 <script type="text/javascript">//<![CDATA[
-       XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
-               function(x, data)
+       // helper to move status data to the relevant
+       // screen objects
+       // called by XHR.poll and XHR.get
+       function _data2elements(x, data) {
+               var tbl = document.getElementById('ddns_status_table');
+               // security check
+               if ( !(tbl) ) { return; }
+
+               // clear all rows
+               while (tbl.rows.length > 1)
+                       tbl.deleteRow(1);
+
+               // variable for Modulo-Division use to set cbi-rowstyle-? (0 or 1)
+               var x = -1;
+               var i = 1;
+
+               // no data => no ddns-scripts Version 2 installed
+               if ( !data ) {
+                       var txt = '<br /><strong><font color="red"><%:Old version of ddns-scripts installed%></font>' ;
+                       var url = '<a href="' ;
+                       url += '<%=luci.dispatcher.build_url("admin", "system", "packages")%>' ;
+                       url += '"><%:install update here%></a></strong>' ;
+                       var tr = tbl.insertRow(-1);
+                       tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1);
+                       var td = tr.insertCell(-1);
+                       td.colSpan = 2 ;
+                       td.innerHTML = txt + " - " + url
+                       tr.insertCell(-1).colSpan = 3 ;
+                       return;
+               }
+
+               // DDNS Service disabled
+               if (data[0].enabled == 0) {
+                       var txt = '<strong><font color="red"><%:DDNS Autostart disabled%></font>' ;
+                       var url = '<a href="' + data[0].url_up + '"><%:enable here%></a></strong>' ;
+                       var tr = tbl.insertRow(-1);
+                       tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1);
+                       var td = tr.insertCell(-1);
+                       td.colSpan = 2 ;
+                       td.innerHTML = txt + " - " + url
+                       tr.insertCell(-1).colSpan = 3 ;
+                       x++ ;
+               }
+
+               for( i = 1; i < data.length; i++ )
                {
-                       var tbl = document.getElementById('ddns_status_table');
-                       // security check
-                       if ( !(tbl) ) { return; }
-
-                       // clear all rows
-                       while (tbl.rows.length > 1) 
-                               tbl.deleteRow(1);
-
-                       // variable for Modulo-Division use to set cbi-rowstyle-? (0 or 1)
-                       var x = -1;
-                       var i = 1;
-
-                       // no data => no ddns-scripts Version 2 installed
-                       if ( !data ) {
-                               var txt = '<br /><strong><font color="red"><%:Old version of ddns-scripts installed%></font>' ;
-                               var url = '<a href="' ;
-                               url += '<%=luci.dispatcher.build_url("admin", "system", "packages")%>' ;
-                               url += '"><%:install update here%></a></strong>' ;
-                               var tr = tbl.insertRow(-1);
-                               tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1);
-                               var td = tr.insertCell(-1);
-                               td.colSpan = 2 ;
-                               td.innerHTML = txt + " - " + url
-                               tr.insertCell(-1).colSpan = 3 ;
-                               return;
+                       var tr = tbl.insertRow(-1);
+                       tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1) ;
+
+                       // configuration
+                       tr.insertCell(-1).innerHTML = '<strong>' + data[i].section + '</strong>' ;
+
+                       // pid
+                       // data[i].pid ignored here
+
+                       // last update
+                       // data[i].datelast ignored here
+
+                       // next update
+                       switch (data[i].datenext) {
+                               case "_empty_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:Unknown error%></em>' ;
+                                       break;
+                               case "_stopped_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:Stopped%></em>' ;
+                                       break;
+                               case "_disabled_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:Disabled%></em>' ;
+                                       break;
+                               case "_noupdate_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:Update error%></em>' ;
+                                       break;
+                               case "_runonce_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:Run once%></em>' ;
+                                       break;
+                               case "_verify_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:Verify%></em>';
+                                       break;
+                               default:
+                                       tr.insertCell(-1).innerHTML = data[i].datenext ;
+                                       break;
                        }
 
-                       // DDNS Service disabled
-                       if (data[0].enabled == 0) {
-                               var txt = '<strong><font color="red"><%:DDNS Autostart disabled%></font>' ;
-                               var url = '<a href="' + data[0].url_up + '"><%:enable here%></a></strong>' ;
-                               var tr = tbl.insertRow(-1);
-                               tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1);
-                               var td = tr.insertCell(-1);
-                               td.colSpan = 2 ;
-                               td.innerHTML = txt + " - " + url
-                               tr.insertCell(-1).colSpan = 3 ;
-                               x++ ;
-                       }
+                       // domain
+                       if (data[i].domain == "_nodomain_")
+                               tr.insertCell(-1).innerHTML = '<em><%:config error%></em>';
+                       else
+                               tr.insertCell(-1).innerHTML = data[i].domain;
 
-                       for( i = 1; i < data.length; i++ )
-                       {
-                               var tr = tbl.insertRow(-1);
-                               tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1) ;
-
-                               // configuration
-                               tr.insertCell(-1).innerHTML = '<strong>' + data[i].section + '</strong>' ;
-
-                               // pid
-                               // data[i].pid ignored here
-
-                               // last update
-                               // data[i].datelast ignored here
-
-                               // next update
-                               switch (data[i].datenext) {
-                                       case "_empty_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:Unknown error%></em>' ;
-                                               break;
-                                       case "_stopped_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:Stopped%></em>' ;
-                                               break;
-                                       case "_disabled_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:Disabled%></em>' ;
-                                               break;
-                                       case "_noupdate_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:Update error%></em>' ;
-                                               break;
-                                       case "_runonce_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:Run once%></em>' ;
-                                               break;
-                                       case "_verify_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:Verify%></em>';
-                                               break;
-                                       default:
-                                               tr.insertCell(-1).innerHTML = data[i].datenext ;
-                                               break;
-                               }
-
-                               // domain
-                               if (data[i].domain == "_nodomain_")
-                                       tr.insertCell(-1).innerHTML = '<em><%:config error%></em>';
-                               else
-                                       tr.insertCell(-1).innerHTML = data[i].domain;
-
-                               // registered IP
-                               switch (data[i].reg_ip) {
-                                       case "_nodomain_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
-                                               break;
-                                       case "_nodata_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:No data%></em>';
-                                               break;
-                                       case "_noipv6_":
-                                               tr.insertCell(-1).innerHTML = '<em><%:IPv6 not supported%></em>';
-                                               break;
-                                       default:
-                                               tr.insertCell(-1).innerHTML = data[i].reg_ip;
-                                               break;
-                               }
-
-                               // monitored interfacce
-                               if (data[i].iface == "_nonet_")
+                       // registered IP
+                       switch (data[i].reg_ip) {
+                               case "_nodomain_":
                                        tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
-                               else
-                                       tr.insertCell(-1).innerHTML = data[i].iface;
+                                       break;
+                               case "_nodata_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:No data%></em>';
+                                       break;
+                               case "_noipv6_":
+                                       tr.insertCell(-1).innerHTML = '<em><%:IPv6 not supported%></em>';
+                                       break;
+                               default:
+                                       tr.insertCell(-1).innerHTML = data[i].reg_ip;
+                                       break;
                        }
 
-                       if (tbl.rows.length == 1 || (data[0].enabled == 0 && tbl.rows.length == 2) ) {
-                               var br = '<br />';
-                               if (tbl.rows.length > 1) 
-                                       br = '';
-                               var tr = tbl.insertRow(-1);
-                               tr.className = "cbi-section-table-row";
-                               var td = tr.insertCell(-1);
-                               td.colSpan = 5;
-                               td.innerHTML = '<em>' + br + '<%:There is no service configured.%></em>' ;
-                       }
+                       // monitored interfacce
+                       if (data[i].iface == "_nonet_")
+                               tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
+                       else
+                               tr.insertCell(-1).innerHTML = data[i].iface;
+               }
+
+               if (tbl.rows.length == 1 || (data[0].enabled == 0 && tbl.rows.length == 2) ) {
+                       var br = '<br />';
+                       if (tbl.rows.length > 1)
+                               br = '';
+                       var tr = tbl.insertRow(-1);
+                       tr.className = "cbi-section-table-row";
+                       var td = tr.insertCell(-1);
+                       td.colSpan = 5;
+                       td.innerHTML = '<em>' + br + '<%:There is no service configured.%></em>' ;
+               }
+       }
+
+       // force to immediate show status (not waiting for XHR.poll)
+       XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
+               function(x, data) {
+                       _data2elements(x, data);
+               }
+       );
+
+       XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
+               function(x, data) {
+                       _data2elements(x, data);
                }
        );
 //]]></script>