* Core translation part 1

* Introduced new default theme "OpenWRT.org"
* Minor tweaks
This commit is contained in:
Steven Barth 2008-05-31 08:04:49 +00:00
parent 464f6ed456
commit 2623e2880c
17 changed files with 591 additions and 70 deletions

View file

@ -132,6 +132,7 @@ define Package/luci-ff-halle
DEPENDS+= \
+luci-sgi-haserl +luci-app-splash \
+luci-app-ffwizard-leipzig \
+luci-theme-fledermaus \
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
+kmod-tun +ip
TITLE:=Freifunk Halle Community Meta-Package
@ -148,6 +149,7 @@ define Package/luci-ff-leipzig
DEPENDS+= \
+luci-sgi-haserl +luci-app-splash \
+luci-app-ffwizard-leipzig \
+luci-theme-fledermaus \
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
+kmod-tun +ip
TITLE:=Freifunk Leipzig Community Meta-Package
@ -163,6 +165,7 @@ define Package/luci-ff-hannover
$(call Package/luci/fftemplate)
DEPENDS+= \
+luci-sgi-haserl +luci-app-splash \
+luci-theme-fledermaus \
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice
TITLE:=Freifunk Hannover Community Meta-Package
URL:=http://www.freifunk-hannover.de/
@ -179,7 +182,7 @@ endef
define Package/luci-mod-admin-core
$(call Package/luci/webtemplate)
DEPENDS+=+luci-web +luci-cbi +luci-theme-fledermaus
DEPENDS+=+luci-web +luci-cbi +luci-theme-openwrt
TITLE:=Administration module
endef
@ -297,13 +300,22 @@ endef
### Templates ###
define Package/luci-theme-fledermaus
$(call Package/luci/thtemplate)
TITLE:=Fledermaus (default)
TITLE:=Fledermaus (Freifunk theme)
endef
define Package/luci-theme-fledermaus/install
$(call Package/luci/install/template,$(1),themes/fledermaus)
endef
define Package/luci-theme-openwrt
$(call Package/luci/thtemplate)
TITLE:=OpenWRT.org (default)
endef
define Package/luci-theme-openwrt/install
$(call Package/luci/install/template,$(1),themes/openwrt.org)
endef
### Compile ###
ifneq ($(CONFIG_PACKAGE_luci-core),)
@ -356,6 +368,9 @@ endif
ifneq ($(CONFIG_PACKAGE_luci-theme-fledermaus),)
PKG_SELECTED_MODULES+=themes/fledermaus
endif
ifneq ($(CONFIG_PACKAGE_luci-theme-openwrt),)
PKG_SELECTED_MODULES+=themes/openwrt.org
endif
$(eval $(call BuildPackage,luci-core))
@ -378,3 +393,4 @@ $(eval $(call BuildPackage,luci-sgi-haserl))
$(eval $(call BuildPackage,luci-sgi-webuci))
$(eval $(call BuildPackage,luci-theme-fledermaus))
$(eval $(call BuildPackage,luci-theme-openwrt))

View file

@ -0,0 +1,37 @@
a_i_ui = "User Interface"
c_lucidesc = [[LuCI is a free Lua library with integrated MVC-Webframework and webinterface for embedded devices,
aspecially routers that run OpenWRT. Luci is licensed under the Apache-License.]]
c_projecthome = "Project Homepage"
c_leaddev = "Lead Development"
c_contributors = "Contributing Developers"
c_thanksto = "Thanks To"
a_i_i_hello = "Hello!"
a_i_i_admin1 = "This is the administration area of LuCI."
a_i_i_admin2 = "LuCI is a free, flexible, and user friendly graphical interface for configuring OpenWRT Kamikaze."
a_i_i_admin3 = "On the following pages you can adjust all important settings of your router."
a_i_i_admin4 = "You will find a navigation leading to the different configuration pages on the left side."
a_i_i_admin5 = [[As we are always want to improve this interface we are looking forward
to your feedback and suggestions.]]
a_i_i_admin6 = "And now have fun with your router!"
a_i_i_team = "The LuCI Team"
a_i_status1 = [[Here you can find information about the current system status like CPU clock frequency, memory
usage or network interface data.]]
a_i_status2 = [[Also kernel or service logfiles can be viewed here to get an overview over their current state.]]
a_s_packages = "Software"
a_s_changepw = "Admin Password"
a_s_ipkg = "IPKG-Configuration"
a_s_sshkeys = "SSH-Keys"
a_s_fstab = "Mount Points"
luci1 = "Here you can customize the settings and the functionality of LuCI."
language = "Language"
general = "General"
ucicommit = "Post-commit actions"
ucicommit1 = [[These commands will be executed automatically when a given UCI configuration is committed allowing
changes to be applied instantly.]]
keepflash = "Files to be kept when flashing a new firmware"
keepflash1 = "When flashing a new firmware with LuCI these files will be added to the new firmware installation."

View file

@ -0,0 +1,27 @@
about = "About"
add = "Add"
administration = "Administration"
apply = "Apply"
changes = "Changes"
config = "Configuration"
fwupgrade = "Firmware Upgrade"
hostname = "Hostname"
load = "Load"
overview = "Overview"
packagemanager = "Package Manager"
path = "Path"
reset = "Reset"
revert = "Revert"
save = "Save"
statistics = "Statistics"
syslog = "System Log"
system = "System"
webui = "Web UI"

View file

@ -128,9 +128,6 @@ function dispatch()
tpl.viewns.media = luci.config.main.mediaurlbase
tpl.viewns.resource = luci.config.main.resourcebase
-- Load default translation
require("luci.i18n").loadc("default")
if c and type(c.target) == "function" then
dispatched = c
@ -224,10 +221,20 @@ function createtree()
end
require("luci.i18n")
-- Load default translation
luci.i18n.loadc("default")
local scope = _G
for k,v in pairs(_M) do
if type(v) == "function" then
scope[k] = v
end
end
for k, v in pairs(index) do
luci.util.updfenv(v, _M)
luci.util.extfenv(v, "_NAME", k)
scope._NAME = k
setfenv(v, scope)
local stat, err = pcall(v)
if not stat then

View file

@ -1,33 +1,33 @@
config core main
option lang de
option mediaurlbase /luci-static/fledermaus
option mediaurlbase /luci-static/openwrt.org
option resourcebase /luci-static/resources
config core brand
option title "OpenWRT Kamikaze"
option subtitle Freifunkedition
option firmware "OpenWRT Kamikaze"
option distro "Freifunk Firmware 2.x"
option title "OpenWRT Kamikaze"
option subtitle "Lua Configuration Interface"
option firmware "OpenWRT Kamikaze"
option distro "Development Snapshot"
config extern flash_keep
option uci "/etc/config"
option uci "/etc/config"
option dropbear "/etc/dropbear"
option openvpn "/etc/openvpn"
option passwd "/etc/passwd"
option ipkg "/etc/ipkg.conf"
option ipkg "/etc/ipkg.conf"
option httpd "/etc/httpd.conf"
option firewall "/etc/firewall.user"
config event uci_oncommit
option network "/etc/init.d/network restart"
option wireless "/etc/init.d/network restart"
option olsr "/sbin/reboot"
option dhcp "/etc/init.d/dnsmasq restart"
option olsr "/etc/init.d/olsrd restart"
option dhcp "/etc/init.d/dnsmasq restart"
option luci_fw "/etc/init.d/luci_fw restart"
option dropbear "/etc/init.d/dropbear restart"
option httpd "/etc/init.d/httpd restart"
option fstab "/etc/init.d/fstab restart"
option qos "/etc/init.d/qos restart"
option qos "/etc/init.d/qos restart"
option luci_splash "/etc/init.d/luci_splash restart"
option freifunk "/etc/init.d/luci_freifunk restart"
@ -36,4 +36,5 @@ config internal languages
option en "English"
config internal themes
option OpenWRT "/luci-static/openwrt.org"
option Fledermaus "/luci-static/fledermaus"

View file

@ -1,26 +1,30 @@
module("luci.controller.admin.index", package.seeall)
function index()
luci.i18n.loadc("admin-core")
local i18n = luci.i18n.translate
local root = node()
if not root.target then
root.target = alias("admin")
end
entry({"about"}, template("about"))
entry({"about"}, template("about")).i18n = "admin-core"
local page = node("admin")
page.target = alias("admin", "index")
page.title = "Administration"
page.title = i18n("administration", "Administration")
page.order = 10
page.i18n = "admin-core"
local page = node("admin", "index")
page.target = template("admin_index/index")
page.title = "Übersicht"
page.title = i18n("overview", "Übersicht")
page.order = 10
local page = node("admin", "index", "luci")
page.target = cbi("admin_index/luci")
page.title = "Oberfläche"
page.title = i18n("a_i_ui", "Oberfläche")
end

View file

@ -1,8 +1,11 @@
module("luci.controller.admin.status", package.seeall)
function index()
entry({"admin", "status"}, template("admin_status/index"), "Status", 20)
entry({"admin", "status", "syslog"}, call("action_syslog"), "Systemprotokoll")
luci.i18n.loadc("admin-core")
local i18n = luci.i18n.translate
entry({"admin", "status"}, template("admin_status/index"), i18n("status", "Status"), 20)
entry({"admin", "status", "syslog"}, call("action_syslog"), i18n("syslog", "Systemprotokoll"))
end
function action_syslog()

View file

@ -8,14 +8,17 @@ require("luci.model.ipkg")
require("luci.model.uci")
function index()
entry({"admin", "system"}, template("admin_system/index"), "System", 30)
entry({"admin", "system", "packages"}, call("action_packages"), "Paketverwaltung", 10)
entry({"admin", "system", "packages", "ipkg"}, call("action_ipkg"), "IPKG-Konfiguration")
entry({"admin", "system", "passwd"}, call("action_passwd"), "Passwort ändern", 20)
entry({"admin", "system", "sshkeys"}, call("action_sshkeys"), "SSH-Schlüssel", 30)
entry({"admin", "system", "hostname"}, cbi("admin_system/hostname"), "Hostname", 40)
entry({"admin", "system", "fstab"}, cbi("admin_system/fstab"), "Einhängepunkte", 50)
entry({"admin", "system", "upgrade"}, call("action_upgrade"), "Firmwareupgrade", 60)
luci.i18n.loadc("admin-core")
local i18n = luci.i18n.translate
entry({"admin", "system"}, template("admin_system/index"), i18n("system", "System"), 30)
entry({"admin", "system", "packages"}, call("action_packages"), i18n("a_s_packages", "Paketverwaltung"), 10)
entry({"admin", "system", "packages", "ipkg"}, call("action_ipkg"), i18n("a_s_ipkg", "IPKG-Konfiguration"))
entry({"admin", "system", "passwd"}, call("action_passwd"), i18n("a_s_changepw", "Passwort ändern"), 20)
entry({"admin", "system", "sshkeys"}, call("action_sshkeys"), i18n("a_s_sshkeys", "SSH-Schlüssel"), 30)
entry({"admin", "system", "hostname"}, cbi("admin_system/hostname"), i18n("hostname", "Hostname"), 40)
entry({"admin", "system", "fstab"}, cbi("admin_system/fstab"), i18n("a_s_fstab", "Einhängepunkte"), 50)
entry({"admin", "system", "upgrade"}, call("action_upgrade"), i18n("fwupgrade", "Firmwareupgrade"), 60)
entry({"admin", "system", "reboot"}, call("action_reboot"), "Neu starten", 70)
end

View file

@ -1,20 +0,0 @@
luci = "User Interface"
hello = "Hello!"
admin1 = "This is the administration area of LuCI."
admin2 = "LuCI is a free, flexible, and user friendly graphical interface for configuring OpenWRT Kamikaze."
admin3 = "On the following pages you can adjust all important settings of your router."
admin4 = "You will find a navigation leading to the different configuration pages on the left side."
admin5 = [[As we are always want to improve this interface we are looking forward
to your feedback and suggestions.]]
admin6 = "And now have fun with your router!"
team = "The LuCI Team"
luci1 = "Here you can customize the settings and the functionality of LuCI."
language = "Language"
general = "General"
ucicommit = "Post-commit actions"
ucicommit1 = [[These commands will be executed automatically when a given UCI configuration is committed allowing
changes to be applied instantly.]]
keepflash = "Files to be kept when flashing a new firmware"
keepflash1 = "When flashing a new firmware with LuCI these files will be added to the new firmware installation."

View file

@ -1,25 +1,25 @@
<%+header%>
<h1><%:about Über%> Luci</h1>
<p><%:lucidesc Luci ist eine freie Lua-Bibliothek mit integriertem MVC-Webframework und Weboberfläche für eingebettete Geräte,
<h1><%:about Über%> LuCI</h1>
<p><%:c_lucidesc LuCI ist eine freie Lua-Bibliothek mit integriertem MVC-Webframework und Weboberfläche für eingebettete Geräte,
speziell Netzwerkrouter unter OpenWRT. Luci steht unter der Apache-Lizenz.%></p>
<p><strong><%:projecthome Projekt-Homepage%>: </strong><a href="http://luci.freifunk-halle.net">luci.freifunk-halle.net</a></p>
<p><strong><%:c_projecthome Projekt-Homepage%>: </strong><a href="http://luci.freifunk-halle.net">luci.freifunk-halle.net</a></p>
<br />
<h2><%:leaddev Leitende Entwicklung%></h2>
<h2><%:c_leaddev Leitende Entwicklung%></h2>
<ul style="font-weight: bold">
<li><a href="mailto:steven-at-midlink-dot-org">Steven "Cyrus" Barth</a> (OpenWRT, Freifunk Halle)</li>
<li><a href="mailto:xm-at-leipzig.freifunk-dot-net">Jo-Philipp "Jow" Wich</a> (Freifunk Leipzig)</li>
</ul>
<br />
<h2><%:contributors Mitwirkende Entwickler%></h2>
<h2><%:c_contributors Mitwirkende Entwickler%></h2>
<ul style="font-weight: bold">
<li><a href="mailto:nbd-at-openwrt-dot-org">Felix "nbd" Fietkau</a> (OpenWRT)</li>
</ul>
<br />
<h2><%:thanksto Dank an%></h2>
<h2><%:c_thanksto Dank an%></h2>
<ul style="font-weight: bold">
<li><a href="http://www.computerhilfe-halle.de">Mono</a> (Computerhilfe-Halle.de)</li>
<li><a href="mailto:mickey-at-netfreaks-dot-org">Mickey Knox</a> (Freifunk Hannover)</li>

View file

@ -1,11 +1,11 @@
<%+header%>
<h1><%:hello Hallo!%></h1>
<p><%:admin1 Dies ist der Administrationsbereich von LuCI.%></p>
<p><%:admin2 LuCI ist eine freie, flexible und benutzerfreundliche grafische Oberfläche zur Konfiguration von OpenWRT Kamikaze.%><br />
<%:admin3 Auf den folgenden Seiten können alle wichtigen Einstellungen des Routers vorgenommen werden.%></p>
<p><%:admin4 Auf der linken Seite befindet sich eine Navigation, die zu den einzelnen Konfigurationsseiten führt.%></p>
<p><%:admin5 Wir sind natürlich stets darum bemüht, diese Oberfläche
<h1><%:a_i_i_hello Hallo!%></h1>
<p><%:a_i_i_admin1 Dies ist der Administrationsbereich von LuCI.%></p>
<p><%:a_i_i_admin2 LuCI ist eine freie, flexible und benutzerfreundliche grafische Oberfläche zur Konfiguration von OpenWRT Kamikaze.%><br />
<%:a_i_i_admin3 Auf den folgenden Seiten können alle wichtigen Einstellungen des Routers vorgenommen werden.%></p>
<p><%:a_i_i_admin4 Auf der linken Seite befindet sich eine Navigation, die zu den einzelnen Konfigurationsseiten führt.%></p>
<p><%:a_i_i_admin5 Wir sind natürlich stets darum bemüht, diese Oberfläche
noch besser und intuitiver zu Gestalten und freuen uns über jegliche Art von Feedback oder Verbesserungsvorschlägen.%></p>
<p><%:admin6 Und nun wünschen wir viel Spaß mit dem Router!%></p>
<p><em><strong><a href="<%=controller%>/about"><%:team Das LuCI-Team%></a></strong></em></p>
<p><%:a_i_i_admin6 Und nun wünschen wir viel Spaß mit dem Router!%></p>
<p><em><strong><a href="<%=controller%>/about"><%:a_i_i_team Das LuCI-Team%></a></strong></em></p>
<%+footer%>

View file

@ -1,7 +1,7 @@
<%+header%>
<h1><%:status Status%></h1>
<p><%:status1 Hier finden sich Informationen über den aktuellen Status des Systems, beispielsweise
<p><%:a_i_status1 Hier finden sich Informationen über den aktuellen Status des Systems, beispielsweise
Prozessortakt, Speicherauslastung und Netzwerkschnittstellen.%></p>
<p><%:status2 Zusätzlich können hier Protokolldaten, des Kernels und diverser Systemdienste eingesehen werden,
<p><%:a_i_status2 Zusätzlich können hier Protokolldaten, des Kernels und diverser Systemdienste eingesehen werden,
um deren Zustand zu kontrollieren.%></p>
<%+footer%>

View file

@ -1,7 +1,6 @@
<%
require("luci.sys")
local load1, load5, load15 = luci.sys.loadavg()
local request = require("luci.dispatcher").request
local category = request[1]
local tree = luci.dispatcher.node()
@ -27,7 +26,7 @@ require("luci.http").prepare_content("text/html")
<% if node and node.css then %><link rel="stylesheet" type="text/css" href="<%=resource%>/<%=node.css%>" /><% end %>
<meta http-equiv="content-type" content="text/xhtml+xml; charset=utf-8" />
<meta http-equiv="content-script-type" content="text/javascript" />
<title>LuCI - Lua Configuration Interface</title>
<title>LuCI - Lua Configuration Interface - <%=node.title%></title>
</head>
<body>
<div id="header">
@ -104,7 +103,7 @@ end
%>
</div>
<div class="sidebar right">
<div><%:webif Weboberfläche%>
<div><%:webui Weboberfläche%>
<ul><%
for k,node in pairs(tree.nodes) do
if node.title then %>

View file

@ -0,0 +1,2 @@
include ../../build/config.mk
include ../../build/module.mk

View file

@ -0,0 +1,8 @@
</div>
<div class="clear"></div>
</div></div>
</div>
<div class="separator black whitetext bold"><a href="<%=controller%>/about"><%=require("luci").__appname__ .. " " .. luci.__version__%> - Lua Configuration Interface</a></div>
</body>
</html>

View file

@ -0,0 +1,136 @@
<%
require("luci.sys")
local load1, load5, load15 = luci.sys.loadavg()
local request = require("luci.dispatcher").request
local category = request[1]
local tree = luci.dispatcher.node()
local cattree = category and luci.dispatcher.node(category)
local node = luci.dispatcher.dispatched
local c = tree
for i,r in ipairs(request) do
if c.nodes and c.nodes[r] then
c = c.nodes[r]
c._menu_selected = true
end
end
require("luci.i18n").loadc("default")
require("luci.http").prepare_content("text/html")
%><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="<%=media%>/cascade.css" />
<% if node and node.css then %><link rel="stylesheet" type="text/css" href="<%=resource%>/<%=node.css%>" /><% end %>
<meta http-equiv="content-type" content="text/xhtml+xml; charset=utf-8" />
<meta http-equiv="content-script-type" content="text/javascript" />
<title>LuCI - Lua Configuration Interface - <%=node.title%></title>
</head>
<body>
<div id="header">
<div class="whitetext smalltext bold right">
<%=luci.config.brand.firmware%><br />
<%=luci.config.brand.distro%><br />
<%:load Last%>: <%=load1%> <%=load5%> <%=load15%><br />
<%:hostname Hostname%>: <%=luci.sys.hostname()%>
</div>
<div>
<span class="headertitle"><%=luci.config.brand.title%></span><br />
<span class="whitetext bold"><%=luci.config.brand.subtitle%></span>
</div>
</div>
<div class="separator black whitetext bold">
<%:path Pfad%>: <%
local c = tree
local url = controller
for k,v in pairs(request) do
if c.nodes and c.nodes[v] then
c = c.nodes[v]
url = url .. "/" .. v
%><a href="<%=url%>"><%=c.title or v%></a> <% if k ~= #request then %>&#187; <% end
end
end
%>
</div>
<div id="page">
<div id="columns"><div id="columnswrapper">
<div class="sidebar left">
<%
local function submenu(prefix, node)
if not node._menu_selected or not node.nodes then
return false
end
local index = {}
for k, n in pairs(node.nodes) do
table.insert(index, {name=k, order=n.order or 100})
end
table.sort(index, function(a, b) return a.order < b.order end)
%>
<ul>
<% for j, v in pairs(index) do
local nnode = node.nodes[v.name]%>
<li>
<span<% if nnode._menu_selected then %> class="blacktext"<%end%>><a href="<%=controller .. prefix .. v.name%>"><%=nnode.title%></a></span>
<% submenu(prefix .. v.name .. "/", nnode) %>
</li>
<% end %>
</ul>
<%
end
if cattree and cattree.nodes then
local index = {}
for k, node in pairs(cattree.nodes) do
table.insert(index, {name=k, order=node.order or 100})
end
table.sort(index, function(a, b) return a.order < b.order end)
for i, k in ipairs(index) do
node = cattree.nodes[k.name]
if node.title then %>
<div<% if node._menu_selected then %> class="blacktext"<%end%>><a href="<%=controller%>/<%=category%>/<%=k.name%>"><%=node.title%></a>
<%submenu("/" .. category .. "/" .. k.name .. "/", node)%>
</div>
<% end
end
end
%>
</div>
<div class="sidebar right">
<div><%:webui Weboberfläche%>
<ul><%
for k,node in pairs(tree.nodes) do
if node.title then %>
<li<% if request[1] == k then %> class="blacktext"<%end%>><a href="<%=controller%>/<%=k%>"><%=node.title%></a></li>
<% end
end%>
</ul>
</div>
<%
if "admin" == request[1] then
require("luci.model.uci")
local ucic = luci.model.uci.changes()
if ucic then
ucic = #luci.util.split(ucic)
end
%>
<div><%:config Konfiguration%>
<ul>
<% if ucic then %>
<li><a href="<%=controller%>/admin/uci/changes"><%:changes Änderungen%>: <%=ucic%></a></li>
<li><a href="<%=controller%>/admin/uci/apply"><%:apply Anwenden%></a></li>
<li><a href="<%=controller%>/admin/uci/revert"><%:revert Verwerfen%></a></li>
<% else %>
<li><%:changes Änderungen%>: 0</li>
<% end %>
</ul>
</div>
<% end %>
</div>
<div id="content">

View file

@ -0,0 +1,298 @@
@charset "utf-8";
body {
font-family: Verdana, Arial, sans-serif;
background-color: #557788;
}
h1 {
margin: 0%;
font-size: 1.4em;
font-weight: bold;
margin-bottom: 0.5em;
}
h2 {
margin: 0%;
font-size: 1.2em;
font-weight: bold;
}
h3 {
margin: 0%;
}
#page {
background-color: #d4dce0;
border-left: 3px solid #000000;
border-right: 3px solid #000000;
}
#header {
padding: 0.2em;
height: 4.5em;
padding-left: 1.2em;
}
#columns {
border-left: 10.1em solid #ccd6db;
border-right: 10.1em solid #ccd6db;
display: block;
padding: 0.1em;
}
#columnswrapper {
display: block;
margin-left: -10em;
margin-right: -10em;
}
#content {
margin-left: 14em;
margin-right: 14em;
display: block;
position: relative;
padding: 2px;
font-size: 0.8em;
}
.headerlogo {
height: 4em;
padding: 5px;
}
.headerlogo img {
height: 100%;
}
.headertitle {
font-size: 2.4em;
color: black;
font-weight: bold;
letter-spacing: 0.6em;
text-transform: lowercase;
}
.separator {
padding-left: 0.25em;
font-weight: bold;
font-size: 0.8em;
line-height: 1.4em;
}
.whitetext {
color: white;
}
.blacktext {
color: #000000;
}
.magentatext {
color: #dc0065;
}
.inheritcolor {
color: inherit;
}
.smalltext {
font-size: 0.8em;
}
.black {
background-color: #000000;
}
.nodeco {
text-decoration: none;
}
.redhover:hover {
color: red;
}
.bold {
font-weight: bold;
}
.sidebar {
position: relative;
padding: 0.25em;
color: gray;
width: 9em;
font-weight: bold;
}
.separator a, .sidebar a {
color: inherit;
text-decoration: inherit;
}
.separator a:hover, .sidebar a:hover {
color: red;
}
.sidebar div {
padding-bottom: 0.5em;
}
.sidebar ul {
font-size: 0.8em;
color: white;
list-style-type: none;
padding-left: 1em;
margin-top: 0%;
}
.table {
display: table;
}
.table-row {
display: table-row;
}
.table-cell {
display: table-cell;
}
.left {
float: left;
text-align: left;
}
.right {
float: right;
text-align: right;
}
.clear {
clear: both;
}
.hidden {
display: none;
}
.inline {
display: inline;
}
.code {
background: #f7f7f7;
border: 1px solid #d7d7d7;
margin: 1em 1.75em;
padding: 1em;
}
code {
display: block;
background: #f7f7f7;
border: 1px solid #d7d7d7;
margin: 1em 1.75em;
padding: 1em;
overflow: auto;
white-space: pre;
}
.cbi-section {
margin-top: 1em;
}
.cbi-section-remove {
text-align: right;
}
.cbi-value {
display: table-row;
}
.cbi-value-title {
display: table-cell;
line-height: 1.75em;
font-weight: bold;
padding: 0.25em;
}
.cbi-value-field {
display: table-cell;
text-align: left;
padding: 0.25em;
line-height: 1.75em;
}
.cbi-value-field input, .cbi-value-field select,
.cbi-optionals select, .cbi-optionals input,
.cbi-section-remove input, .cbi-section-create input {
font-size: 0.8em;
margin: 0%;
}
.cbi-section-descr {
padding-bottom: 1em;
}
.cbi-value-description {
display: inline;
font-style: italic;
font-size: 0.8em;
padding: 0.25em;
margin-bottom: 0.5em;
}
.cbi-form-separator {
margin-top: 1em;
}
.cbi-section-node {
display: table;
padding: 0.25em;
border: 1px solid #000000;
}
.cbi-section-row {
display: table-row;
}
.cbi-section-row-head {
display: table-cell;
font-weight: bold;
padding: 0.25em;
}
.cbi-section-row-descr {
display: table-cell;
padding: 0.25em;
font-size: 0.8em;
}
.cbi-section-node h3 {
margin-bottom: 0.5em;
}
.cbi-error {
color: red;
font-weight: bold;
font-size: 0.8em;
margin-bottom: 0.75em;
}
.cbi-optionals {
margin-top: 1em;
display: table-cell;
}
.cbi-optionals option {
font-size: 0.8em;
}
.error {
color: red;
font-weight: bold;
}
.ok {
color: green;
font-weight: bold;
}