diff --git a/libs/cbi/htdocs/luci-static/resources/cbi/add.gif b/libs/cbi/htdocs/luci-static/resources/cbi/add.gif
new file mode 100644
index 0000000000..0888abf85e
Binary files /dev/null and b/libs/cbi/htdocs/luci-static/resources/cbi/add.gif differ
diff --git a/libs/cbi/htdocs/luci-static/resources/cbi/apply.gif b/libs/cbi/htdocs/luci-static/resources/cbi/apply.gif
new file mode 100644
index 0000000000..82ae7ed821
Binary files /dev/null and b/libs/cbi/htdocs/luci-static/resources/cbi/apply.gif differ
diff --git a/libs/cbi/htdocs/luci-static/resources/cbi/fieldadd.gif b/libs/cbi/htdocs/luci-static/resources/cbi/fieldadd.gif
new file mode 100644
index 0000000000..431ff64d1f
Binary files /dev/null and b/libs/cbi/htdocs/luci-static/resources/cbi/fieldadd.gif differ
diff --git a/libs/cbi/htdocs/luci-static/resources/cbi/help.gif b/libs/cbi/htdocs/luci-static/resources/cbi/help.gif
new file mode 100644
index 0000000000..9dfa0e196a
Binary files /dev/null and b/libs/cbi/htdocs/luci-static/resources/cbi/help.gif differ
diff --git a/libs/cbi/htdocs/luci-static/resources/cbi/reset.gif b/libs/cbi/htdocs/luci-static/resources/cbi/reset.gif
new file mode 100644
index 0000000000..c941c19028
Binary files /dev/null and b/libs/cbi/htdocs/luci-static/resources/cbi/reset.gif differ
diff --git a/libs/cbi/htdocs/luci-static/resources/cbi/save.gif b/libs/cbi/htdocs/luci-static/resources/cbi/save.gif
new file mode 100644
index 0000000000..35e949963e
Binary files /dev/null and b/libs/cbi/htdocs/luci-static/resources/cbi/save.gif differ
diff --git a/libs/cbi/luasrc/view/cbi/footer.htm b/libs/cbi/luasrc/view/cbi/footer.htm
index 732389c00a..b719058200 100644
--- a/libs/cbi/luasrc/view/cbi/footer.htm
+++ b/libs/cbi/luasrc/view/cbi/footer.htm
@@ -14,9 +14,9 @@ $Id$
-%>
-
-
-
+
+
+
diff --git a/libs/cbi/luasrc/view/cbi/full_valuefooter.htm b/libs/cbi/luasrc/view/cbi/full_valuefooter.htm
index a7b56e2944..8933016d7d 100644
--- a/libs/cbi/luasrc/view/cbi/full_valuefooter.htm
+++ b/libs/cbi/luasrc/view/cbi/full_valuefooter.htm
@@ -14,6 +14,7 @@ $Id$
-%>
<% if #self.description > 0 then -%>
+
<%=self.description%>
<%- end %>
diff --git a/libs/cbi/luasrc/view/cbi/nsection.htm b/libs/cbi/luasrc/view/cbi/nsection.htm
index 3f86531097..27db4bfbfb 100644
--- a/libs/cbi/luasrc/view/cbi/nsection.htm
+++ b/libs/cbi/luasrc/view/cbi/nsection.htm
@@ -35,7 +35,7 @@ $Id$
<%- end %>
<%=self.description%>
-
+
<% end %>
diff --git a/libs/cbi/luasrc/view/cbi/tblsection.htm b/libs/cbi/luasrc/view/cbi/tblsection.htm
index 46f7e5115d..cfee09f1c9 100644
--- a/libs/cbi/luasrc/view/cbi/tblsection.htm
+++ b/libs/cbi/luasrc/view/cbi/tblsection.htm
@@ -11,6 +11,13 @@ You may obtain a copy of the License at
$Id$
+-%>
+<%-
+local rowcnt = 1
+function rowstyle()
+ rowcnt = rowcnt + 1
+ return (rowcnt % 2) + 1
+end
-%>
@@ -26,9 +33,7 @@ $Id$
<%- end -%>
<%- for i, k in pairs(self.children) do -%>
<%=k.title%>
- <%- count = count + 1; end; if self.extedit then -%>
-
- <%- count = count + 1; end; if self.addremove then -%>
+ <%- count = count + 1; end; if self.extedit or self.addremove then -%>
<%- count = count + 1; end -%>
@@ -38,9 +43,7 @@ $Id$
<%- end -%>
<%- for i, k in pairs(self.children) do -%>
<%=k.description%>
- <%- end; if self.extedit then -%>
-
- <%- end; if self.addremove then -%>
+ <%- end; if self.extedit or self.addremove then -%>
<%- end %>
@@ -60,15 +63,10 @@ $Id$
<%- if self.extedit then -%>
<%- end; if self.addremove then %>
-
+
<%- end -%>
<%- end -%>
- <%- if self.addremove then -%>
-
-
-
- <%- end -%>
<%- end -%>
@@ -84,10 +82,10 @@ $Id$
<% if self.anonymous then %>
-
+
<% else %>
-
+
<% end %>
<% if self.err_invalid then %>
diff --git a/libs/cbi/luasrc/view/cbi/tsection.htm b/libs/cbi/luasrc/view/cbi/tsection.htm
index da44cdc132..a81715b0ab 100644
--- a/libs/cbi/luasrc/view/cbi/tsection.htm
+++ b/libs/cbi/luasrc/view/cbi/tsection.htm
@@ -43,10 +43,10 @@ $Id$
<% if self.addremove then -%>
<% if self.anonymous then -%>
-
+
<%- else -%>
-
+
<%- end %>
<% if self.err_invalid then -%>
diff --git a/libs/cbi/luasrc/view/cbi/ucisection.htm b/libs/cbi/luasrc/view/cbi/ucisection.htm
index e06cb5392b..2ae8560038 100644
--- a/libs/cbi/luasrc/view/cbi/ucisection.htm
+++ b/libs/cbi/luasrc/view/cbi/ucisection.htm
@@ -31,6 +31,6 @@ $Id$
<% end %><% end %>
<% end %>
<% end %>
-
+
<% end %>
diff --git a/modules/admin-core/luasrc/tools/webadmin.lua b/modules/admin-core/luasrc/tools/webadmin.lua
index 45bd910ac5..b9f18ac40d 100644
--- a/modules/admin-core/luasrc/tools/webadmin.lua
+++ b/modules/admin-core/luasrc/tools/webadmin.lua
@@ -14,6 +14,18 @@ $Id$
]]--
module("luci.tools.webadmin", package.seeall)
+require("luci.model.uci")
+
+function byte_format(byte)
+ local suff = {"B", "KB", "MB", "GB", "TB"}
+ for i=1, 5 do
+ if byte > 1024 and i < 5 then
+ byte = byte / 1024
+ else
+ return string.format("%.2f %s", byte, suff[i])
+ end
+ end
+end
function cbi_add_networks(field)
luci.model.uci.foreach("network", "interface",
diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/network.lua b/modules/admin-full/luasrc/model/cbi/admin_network/network.lua
index 75c9f28185..00c001e50a 100644
--- a/modules/admin-full/luasrc/model/cbi/admin_network/network.lua
+++ b/modules/admin-full/luasrc/model/cbi/admin_network/network.lua
@@ -13,6 +13,7 @@ You may obtain a copy of the License at
$Id$
]]--
require("luci.sys")
+require("luci.tools.webadmin")
m = Map("network", translate("interfaces"), translate("a_n_ifaces1"))
@@ -49,11 +50,14 @@ function up.write(self, section, value)
os.execute(call .. " " .. section)
end
-ipaddr = s:option(DummyValue, "ipaddr", translate("ipaddress"))
-ipaddr.stateful = true
+hwaddr = s:option(DummyValue, "_hwaddr")
+function hwaddr.cfgvalue(self, section)
+ local ix = self.map:stateget(section, "ifname") or ""
+ return luci.fs.readfile("/sys/class/net/" .. ix .. "/address") or "n/a"
+end
-ip6addr = s:option(DummyValue, "ip6addr", translate("ip6address"))
-ip6addr.stateful = true
+
+ipaddr = s:option(DummyValue, "ipaddr")
function ipaddr.cfgvalue(self, section)
local ip = self.map:stateget(section, "ipaddr")
@@ -63,20 +67,32 @@ function ipaddr.cfgvalue(self, section)
return parsed and parsed:string() or ""
end
-rx = s:option(DummyValue, "_rx")
+txrx = s:option(DummyValue, "_rx", "TX / RX")
-function rx.cfgvalue(self, section)
+function txrx.cfgvalue(self, section)
local ix = self.map:stateget(section, "ifname")
- local bt = netstat and netstat[ix] and netstat[ix][1]
- return bt and string.format("%.2f MB", tonumber(bt) / 1024 / 1024)
+
+ local rx = netstat and netstat[ix] and netstat[ix][1]
+ rx = rx and luci.tools.webadmin.byte_format(tonumber(rx)) or "-"
+
+ local tx = netstat and netstat[ix] and netstat[ix][9]
+ tx = tx and luci.tools.webadmin.byte_format(tonumber(tx)) or "-"
+
+ return string.format("%s / %s", tx, rx)
end
-tx = s:option(DummyValue, "_tx")
+errors = s:option(DummyValue, "_err", "Errors", "TX / RX")
-function tx.cfgvalue(self, section)
+function errors.cfgvalue(self, section)
local ix = self.map:stateget(section, "ifname")
- local bt = netstat and netstat[ix] and netstat[ix][9]
- return bt and string.format("%.2f MB", tonumber(bt) / 1024 / 1024)
+
+ local rx = netstat and netstat[ix] and netstat[ix][3]
+ local tx = netstat and netstat[ix] and netstat[ix][11]
+
+ rx = rx and tostring(rx) or "-"
+ tx = tx and tostring(tx) or "-"
+
+ return string.format("%s / %s", tx, rx)
end
return m
\ No newline at end of file
diff --git a/themes/openwrt.org/htdocs/luci-static/openwrt.org/cascade.css b/themes/openwrt.org/htdocs/luci-static/openwrt.org/cascade.css
index 218d7674dc..ae3e5901d0 100644
--- a/themes/openwrt.org/htdocs/luci-static/openwrt.org/cascade.css
+++ b/themes/openwrt.org/htdocs/luci-static/openwrt.org/cascade.css
@@ -216,20 +216,31 @@ div#content ul {
input[type=submit],
input[type=reset],
+input[type=image],
label {
cursor: pointer;
}
+
select,
input,
textarea {
background: #eeeeee;
color: #000000;
- border: 1px solid #000000;
+ border-width: 1px;
+ border-color: #000000;
+}
+
+input[type=image] {
+ border: none;
}
input:focus,
-textarea:focus {
+input:hover,
+select:focus,
+select:hover,
+textarea:focus,
+textarea:hover {
background: #ffffff;
}
@@ -245,10 +256,40 @@ td input[type=password] {
width: 99%;
}
-button.clean {
- cursor: pointer;
- border: none;
- background-color: inherit;
+input.cbi-button {
+ padding-left: 17px;
+}
+
+input.cbi-button-add {
+ background: url('../resources/cbi/add.gif') 1px 1px;
+ background-repeat: no-repeat;
+}
+
+input.cbi-button-fieldadd {
+ background: url('../resources/cbi/fieldadd.gif') 1px 1px;
+ background-repeat: no-repeat;
+}
+
+input.cbi-button-reset {
+ background: url('../resources/cbi/reset.gif') 1px 1px;
+ background-repeat: no-repeat;
+}
+
+input.cbi-button-save {
+ background: url('../resources/cbi/save.gif') 1px 1px;
+ background-repeat: no-repeat;
+}
+
+input.cbi-button-apply {
+ background: url('../resources/cbi/apply.gif') 1px 1px;
+ background-repeat: no-repeat;
+}
+
+div.cbi-section-remove input {
+ background: url('../resources/cbi/remove.gif') 1px 1px;
+ background-repeat: no-repeat;
+ padding-left: 17px;
+ border-bottom: none;
}
textarea {
@@ -290,6 +331,14 @@ table.smalltext tr td {
border-left: 1px solid #666666;
}
+.cbi-rowstyle-1 {
+ background-color: #eeeeff;
+}
+
+.cbi-rowstyle-2 {
+
+}
+
div.cbi-value {
clear: left;
padding: 0.25em;
@@ -344,11 +393,6 @@ div.cbi-section-remove {
float: right;
}
-div.cbi-section-remove input {
- border-color: #bbbbbb;
- border-bottom: none;
-}
-
.cbi-section-node {
clear: both;
border: 1px dotted #bbbbbb;