modules/admin-full: make logout a toplevel item, remove overview menu
[project/luci.git] / modules / admin-full / luasrc / model / cbi / admin_index / luci.lua
index 3de8710..e29479b 100644 (file)
@@ -2,6 +2,7 @@
 LuCI - Lua Configuration Interface
 
 Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2010 Jo-Philipp Wich <xm@subsignal.org>
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -11,9 +12,11 @@ You may obtain a copy of the License at
 
 $Id$
 ]]--
+
 require("luci.config")
-m = Map("luci", translate("webui"), translate("a_i_luci1",
- "Hier können Eigenschaften und die Funktionalität der Oberfläche angepasst werden."))
+m = Map("luci", translate("Web <abbr title=\"User Interface\">UI</abbr>"), translate("Here you can customize the settings and the functionality of <abbr title=\"Lua Configuration Interface\">LuCI</abbr>."))
+
+local fs = require "nixio.fs"
 
 -- force reload of global luci config namespace to reflect the changes
 function m.commit_handler(self)
@@ -22,30 +25,83 @@ function m.commit_handler(self)
 end
 
 
-c = m:section(NamedSection, "main", "core", translate("general"))
+c = m:section(NamedSection, "main", "core", translate("General"))
 
-l = c:option(ListValue, "lang", translate("language"))
+l = c:option(ListValue, "lang", translate("Language"))
+l:value("auto")
 
-local i18ndir = luci.i18n.i18ndir .. "default."
-for k, v in pairs(luci.config.languages) do
-       if k:sub(1, 1) ~= "." and luci.fs.isfile(i18ndir .. k:gsub("_", "-") .. ".lua") then
+local i18ndir = luci.i18n.i18ndir .. "base."
+for k, v in luci.util.kspairs(luci.config.languages) do
+       local file = i18ndir .. k:gsub("_", "-")
+       if k:sub(1, 1) ~= "." and fs.access(file .. ".lmo") then
                l:value(k, v)
        end
 end
 
-t = c:option(ListValue, "mediaurlbase", translate("design"))
+t = c:option(ListValue, "mediaurlbase", translate("Design"))
 for k, v in pairs(luci.config.themes) do
        if k:sub(1, 1) ~= "." then
                t:value(v, k)
        end
 end
 
-u = m:section(NamedSection, "uci_oncommit", "event", translate("a_i_ucicommit"),
- translate("a_i_ucicommit1"))
+u = m:section(NamedSection, "uci_oncommit", "event", translate("Post-commit actions"),
+ translate("These commands will be executed automatically when a given <abbr title=\"Unified Configuration Interface\">UCI</abbr> configuration is committed allowing changes to be applied instantly."))
 u.dynamic = true
 
-f = m:section(NamedSection, "flash_keep", "extern", translate("a_i_keepflash"),
- translate("a_i_keepflash1"))
-f.dynamic = true
+
+f = m:section(NamedSection, "main", "core", translate("Files to be kept when flashing a new firmware"))
+
+f:tab("detected", translate("Detected Files"),
+       translate("The following files are detected by the system and will be kept automatically during sysupgrade"))
+
+f:tab("custom", translate("Custom Files"),
+       translate("This is a list of shell glob patterns for matching files and directories to include during sysupgrade"))
+
+d = f:taboption("detected", DummyValue, "_detected", translate("Detected files"))
+d.rawhtml = true
+d.cfgvalue = function(s)
+       local list = io.popen(
+               "( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf " ..
+               "/lib/upgrade/keep.d/* 2>/dev/null) -type f 2>/dev/null; " ..
+               "opkg list-changed-conffiles ) | sort -u"
+       )
+
+       if list then
+               local files = { "<ul>" }
+
+               while true do
+                       local ln = list:read("*l")
+                       if not ln then
+                               break
+                       else
+                               files[#files+1] = "<li>"
+                               files[#files+1] = luci.util.pcdata(ln)
+                               files[#files+1] = "</li>"
+                       end
+               end
+
+               list:close()
+               files[#files+1] = "</ul>"
+
+               return table.concat(files, "")
+       end
+
+       return "<em>" .. translate("No files found") .. "</em>"
+end
+
+c = f:taboption("custom", TextValue, "_custom", translate("Custom files"))
+c.rmempty = false
+c.cols = 70
+c.rows = 30
+
+c.cfgvalue = function(self, section)
+       return nixio.fs.readfile("/etc/sysupgrade.conf")
+end
+
+c.write = function(self, section, value)
+       value = value:gsub("\r\n?", "\n")
+       return nixio.fs.writefile("/etc/sysupgrade.conf", value)
+end
 
 return m