Skip to content
Snippets Groups Projects
Unverified Commit 26b26395 authored by Matthias Schiffer's avatar Matthias Schiffer Committed by GitHub
Browse files

Merge pull request #2399 from MyIgel/remove-xhtml

treewide: Replace xhtml content type with html, remove xhtml workaround, replace self closing tags
parents eea49a28 f033fcfc
No related branches found
No related tags found
No related merge requests found
Showing
with 64 additions and 65 deletions
...@@ -74,8 +74,7 @@ Useful functions: ...@@ -74,8 +74,7 @@ Useful functions:
- *header* (*key*, *value*): Adds an HTTP header to the reply to be sent to - *header* (*key*, *value*): Adds an HTTP header to the reply to be sent to
the client. Has no effect when non-header data has already been written. the client. Has no effect when non-header data has already been written.
- *prepare_content* (*mime*): Sets the *Content-Type* header to the given MIME - *prepare_content* (*mime*): Sets the *Content-Type* header to the given MIME
type, potentially setting additional headers or modifying the MIME type to type
accommodate browser quirks
- *write* (*data*, ...): Sends the given data to the client. If headers have not - *write* (*data*, ...): Sends the given data to the client. If headers have not
been sent, it will be done before the data is written. been sent, it will be done before the data is written.
......
...@@ -45,7 +45,7 @@ msgstr "" ...@@ -45,7 +45,7 @@ msgstr ""
"selbstverständlich vertraulich behandelt und nicht weitergegeben." "selbstverständlich vertraulich behandelt und nicht weitergegeben."
"</p>" "</p>"
"<div class=\"the-key\">" "<div class=\"the-key\">"
"# <%= pcdata(hostname) %><br />" "# <%= pcdata(hostname) %><br>"
"<%= pubkey %>" "<%= pubkey %>"
"</div>" "</div>"
"<p>Dein Knoten startet gerade neu und wird anschließend versuchen, sich mit " "<p>Dein Knoten startet gerade neu und wird anschließend versuchen, sich mit "
......
...@@ -41,7 +41,7 @@ msgstr "" ...@@ -41,7 +41,7 @@ msgstr ""
"\">keys@alpha-centauri.freifunk.net</a>. Of course, your e-mail address will " "\">keys@alpha-centauri.freifunk.net</a>. Of course, your e-mail address will "
"be treated confidentially and will not be passed on.</p>" "be treated confidentially and will not be passed on.</p>"
"<div class=\"the-key\">" "<div class=\"the-key\">"
" # <%= pcdata(hostname) %><br />" " # <%= pcdata(hostname) %><br>"
"<%= pubkey %>" "<%= pubkey %>"
"</div>" "</div>"
"<p>Your node <em><%= pcdata(hostname) %></em> is currently rebooting and will " "<p>Your node <em><%= pcdata(hostname) %></em> is currently rebooting and will "
......
...@@ -36,7 +36,7 @@ msgstr "" ...@@ -36,7 +36,7 @@ msgstr ""
"body=<%= urlencode('# ' .. hostname .. '\n' .. pubkey) %>\">keys@alpha-centauri.freifunk.net</a>." "body=<%= urlencode('# ' .. hostname .. '\n' .. pubkey) %>\">keys@alpha-centauri.freifunk.net</a>."
"</p>" "</p>"
"<div class=\"the-key\">" "<div class=\"the-key\">"
" # <%= pcdata(hostname) %><br />" " # <%= pcdata(hostname) %><br>"
"<%= pubkey %>" "<%= pubkey %>"
"</div>" "</div>"
......
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <html lang="">
<head> <head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0" /> <meta http-equiv="Expires" content="0">
<meta http-equiv="refresh" content="0; URL=/cgi-bin/config" /> <meta http-equiv="refresh" content="0; URL=/cgi-bin/config">
</head> </head>
<body> <body>
</body> </body>
......
...@@ -82,7 +82,7 @@ You may obtain a copy of the License at ...@@ -82,7 +82,7 @@ You may obtain a copy of the License at
end end
%> %>
</ul> </ul>
<br style="clear:both" /> <br style="clear:both">
<% <%
subtree(append(prefix, name), node.nodes[name], ...) subtree(append(prefix, name), node.nodes[name], ...)
%> %>
...@@ -94,13 +94,13 @@ You may obtain a copy of the License at ...@@ -94,13 +94,13 @@ You may obtain a copy of the License at
subtree({path}, root.nodes[category], ...) subtree({path}, root.nodes[category], ...)
end end
http:prepare_content("application/xhtml+xml") http:prepare_content("text/html")
-%> -%>
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <html lang="">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8">
<link rel="stylesheet" type="text/css" media="screen" href="/static/gluon.css" /> <link rel="stylesheet" type="text/css" media="screen" href="/static/gluon.css">
<title><%| hostname .. ((rnode and rnode.title) and ' - ' .. title(rnode) or '') %></title> <title><%| hostname .. ((rnode and rnode.title) and ' - ' .. title(rnode) or '') %></title>
</head> </head>
<body> <body>
...@@ -134,7 +134,7 @@ You may obtain a copy of the License at ...@@ -134,7 +134,7 @@ You may obtain a copy of the License at
<div id="maincontent"> <div id="maincontent">
<noscript> <noscript>
<div class="errorbox"> <div class="errorbox">
<strong><%:JavaScript required!%></strong><br /> <strong><%:JavaScript required!%></strong><br>
<%:You must enable JavaScript in your browser or the web interface will not work properly.%> <%:You must enable JavaScript in your browser or the web interface will not work properly.%>
</div> </div>
</noscript> </noscript>
......
<%- <%-
http:prepare_content("application/xhtml+xml") http:prepare_content("text/html")
-%> -%>
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <html lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no" /> <meta name="viewport" content="width=device-width, user-scalable=no">
<title><%:Error%></title> <title><%:Error%></title>
<link rel="stylesheet" href="/static/status-page.css" type="text/css" /> <link rel="stylesheet" href="/static/status-page.css" type="text/css">
</head> </head>
<body> <body>
<header> <header>
......
...@@ -111,24 +111,24 @@ ...@@ -111,24 +111,24 @@
end end
local function statisticsTraffic(key) local function statisticsTraffic(key)
return string.format('%s<br />%s<br />%s', return string.format('%s<br>%s<br>%s',
statistics(key .. '/packets', 'packetsDiff'), statistics(key .. '/packets', 'packetsDiff'),
statistics(key .. '/bytes', 'bytesDiff'), statistics(key .. '/bytes', 'bytesDiff'),
statistics(key .. '/bytes', 'bytes') statistics(key .. '/bytes', 'bytes')
) )
end end
http:prepare_content("application/xhtml+xml") http:prepare_content("text/html")
-%> -%>
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <html lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no" /> <meta name="viewport" content="width=device-width, user-scalable=no">
<title><%| nodeinfo.hostname %> - <%:Status%></title> <title><%| nodeinfo.hostname %> - <%:Status%></title>
<link rel="stylesheet" href="/static/status-page.css" type="text/css" /> <link rel="stylesheet" href="/static/status-page.css" type="text/css">
</head> </head>
<body data-node-address="<%| http:getenv('SERVER_ADDR') %>"<%= <body data-node-address="<%| http:getenv('SERVER_ADDR') %>"<%=
attr('data-translations', translations) .. attr('data-translations', translations) ..
...@@ -154,21 +154,21 @@ ...@@ -154,21 +154,21 @@
<%- end %> <%- end %>
<dt><%:Model%></dt><dd><%| nodeinfo.hardware.model %></dd> <dt><%:Model%></dt><dd><%| nodeinfo.hardware.model %></dd>
<dt><%:Primary MAC address%></dt><dd><%| nodeinfo.network.mac %></dd> <dt><%:Primary MAC address%></dt><dd><%| nodeinfo.network.mac %></dd>
<dt><%:IP address%></dt><dd><%= pcdata(table.concat(sorted(nodeinfo.network.addresses), '\n')):gsub('\n', '<br />') %></dd> <dt><%:IP address%></dt><dd><%= pcdata(table.concat(sorted(nodeinfo.network.addresses), '\n')):gsub('\n', '<br>') %></dd>
<dt><%:Firmware%></dt><dd><%| nodeinfo.software.firmware.release %></dd> <dt><%:Firmware%></dt><dd><%| nodeinfo.software.firmware.release %></dd>
<% if nodeinfo.network.mesh_vpn then -%> <% if nodeinfo.network.mesh_vpn then -%>
<dt><%:Mesh VPN%></dt> <dt><%:Mesh VPN%></dt>
<dd> <dd>
<%| enabled(nodeinfo.network.mesh_vpn.enabled) %> <%| enabled(nodeinfo.network.mesh_vpn.enabled) %>
<% if nodeinfo.network.mesh_vpn.provider then -%> <% if nodeinfo.network.mesh_vpn.provider then -%>
<br /><%| nodeinfo.network.mesh_vpn.provider %> <br><%| nodeinfo.network.mesh_vpn.provider %>
<%- end %> <%- end %>
</dd> </dd>
<% if nodeinfo.network.mesh_vpn.bandwidth_limit.enabled then -%> <% if nodeinfo.network.mesh_vpn.bandwidth_limit.enabled then -%>
<dt><%:Bandwidth limit%></dt> <dt><%:Bandwidth limit%></dt>
<dd> <dd>
<% if nodeinfo.network.mesh_vpn.bandwidth_limit.ingress then -%> <% if nodeinfo.network.mesh_vpn.bandwidth_limit.ingress then -%>
<%| formatBits(nodeinfo.network.mesh_vpn.bandwidth_limit.ingress*1000) %>/s <%:downstream%><br /> <%| formatBits(nodeinfo.network.mesh_vpn.bandwidth_limit.ingress*1000) %>/s <%:downstream%><br>
<%- end %> <%- end %>
<% if nodeinfo.network.mesh_vpn.bandwidth_limit.egress then -%> <% if nodeinfo.network.mesh_vpn.bandwidth_limit.egress then -%>
<%| formatBits(nodeinfo.network.mesh_vpn.bandwidth_limit.egress*1000) %>/s <%:upstream%> <%| formatBits(nodeinfo.network.mesh_vpn.bandwidth_limit.egress*1000) %>/s <%:upstream%>
...@@ -213,7 +213,7 @@ ...@@ -213,7 +213,7 @@
<tr><th><%:Load average%></th><td><%= statistics('loadavg', 'decimal') %></td></tr> <tr><th><%:Load average%></th><td><%= statistics('loadavg', 'decimal') %></td></tr>
<tr><th><%:RAM%></th><td><%= statistics('memory', 'memory') %></td></tr> <tr><th><%:RAM%></th><td><%= statistics('memory', 'memory') %></td></tr>
<tr><th><%:Filesystem%></th><td><%= statistics('rootfs_usage', 'percent') %></td></tr> <tr><th><%:Filesystem%></th><td><%= statistics('rootfs_usage', 'percent') %></td></tr>
<tr><th><%:Gateway%></th><td><%= statistics('gateway') %><br /><%= statistics('gateway_nexthop', 'neighbour') %></td></tr> <tr><th><%:Gateway%></th><td><%= statistics('gateway') %><br><%= statistics('gateway_nexthop', 'neighbour') %></td></tr>
</table> </table>
<h3><%:Clients%></h3> <h3><%:Clients%></h3>
......
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <html lang="">
<head> <head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0" /> <meta http-equiv="Expires" content="0">
<meta http-equiv="refresh" content="0; URL=/cgi-bin/status" /> <meta http-equiv="refresh" content="0; URL=/cgi-bin/status">
</head> </head>
<body> <body>
</body> </body>
......
...@@ -26,7 +26,7 @@ $Id$ ...@@ -26,7 +26,7 @@ $Id$
<%:Firmware image%> <%:Firmware image%>
</label> </label>
<div class="gluon-value-field"> <div class="gluon-value-field">
<input type="file" name="image" /> <input type="file" name="image">
</div> </div>
</div> </div>
...@@ -36,14 +36,14 @@ $Id$ ...@@ -36,14 +36,14 @@ $Id$
</label> </label>
<div class="gluon-value-field"> <div class="gluon-value-field">
<input id="keepcfg" type="checkbox" name="keepcfg" value="1" checked="checked" /> <input id="keepcfg" type="checkbox" name="keepcfg" value="1" checked="checked">
<label for="keepcfg"></label> <label for="keepcfg"></label>
</div> </div>
</div> </div>
</div> </div>
<div class="gluon-page-actions"> <div class="gluon-page-actions">
<input type="hidden" name="step" value="2" /> <input type="hidden" name="step" value="2">
<input class="gluon-button gluon-button-submit" type="submit" value="<%:Upload image%>" /> <input class="gluon-button gluon-button-submit" type="submit" value="<%:Upload image%>">
</div> </div>
</form> </form>
...@@ -47,13 +47,13 @@ You may obtain a copy of the License at ...@@ -47,13 +47,13 @@ You may obtain a copy of the License at
</p> </p>
<div class="gluon-page-actions"> <div class="gluon-page-actions">
<form method="post" enctype="multipart/form-data" action="<%|url(request)%>" style="display:inline"> <form method="post" enctype="multipart/form-data" action="<%|url(request)%>" style="display:inline">
<input type="hidden" name="step" value="3" /> <input type="hidden" name="step" value="3">
<input type="hidden" name="keepcfg" value="<%=keepconfig and "1" or "0"%>" /> <input type="hidden" name="keepcfg" value="<%=keepconfig and "1" or "0"%>">
<input class="gluon-button gluon-button-submit" type="submit" value="<%:Continue%>" /> <input class="gluon-button gluon-button-submit" type="submit" value="<%:Continue%>">
</form> </form>
<form method="post" enctype="multipart/form-data" action="<%|url(request)%>" style="display:inline"> <form method="post" enctype="multipart/form-data" action="<%|url(request)%>" style="display:inline">
<input type="hidden" name="step" value="1" /> <input type="hidden" name="step" value="1">
<input type="hidden" name="keepcfg" value="<%=keepconfig and "1" or "0"%>" /> <input type="hidden" name="keepcfg" value="<%=keepconfig and "1" or "0"%>">
<input class="gluon-button gluon-button-reset" type="submit" value="<%:Cancel%>" /> <input class="gluon-button gluon-button-reset" type="submit" value="<%:Cancel%>">
</form> </form>
</div> </div>
...@@ -21,11 +21,11 @@ msgstr "Erweiterte Einstellungen" ...@@ -21,11 +21,11 @@ msgstr "Erweiterte Einstellungen"
msgid "" msgid ""
"Alternatively, you can set a password to access your node. Please choose a " "Alternatively, you can set a password to access your node. Please choose a "
"secure password you don't use anywhere else.<br /><br />If you set an empty " "secure password you don't use anywhere else.<br><br>If you set an empty "
"password, login via password will be disabled. This is the default." "password, login via password will be disabled. This is the default."
msgstr "" msgstr ""
"Alternativ kannst du auch ein Passwort setzen. Wähle bitte ein sicheres " "Alternativ kannst du auch ein Passwort setzen. Wähle bitte ein sicheres "
"Passwort, das du nirgendwo anders verwendest.<br /><br />Beim Setzen eines " "Passwort, das du nirgendwo anders verwendest.<br><br>Beim Setzen eines "
"leeren Passworts wird der Login per Passwort gesperrt (dies ist die Standard-" "leeren Passworts wird der Login per Passwort gesperrt (dies ist die Standard-"
"Einstellung)." "Einstellung)."
......
...@@ -21,12 +21,12 @@ msgstr "Paramètres avancés" ...@@ -21,12 +21,12 @@ msgstr "Paramètres avancés"
msgid "" msgid ""
"Alternatively, you can set a password to access your node. Please choose a " "Alternatively, you can set a password to access your node. Please choose a "
"secure password you don't use anywhere else.<br /><br />If you set an empty " "secure password you don't use anywhere else.<br><br>If you set an empty "
"password, login via password will be disabled. This is the default." "password, login via password will be disabled. This is the default."
msgstr "" msgstr ""
"Alternativement, vous pouvez mettre un mot de passe pour accéder à votre " "Alternativement, vous pouvez mettre un mot de passe pour accéder à votre "
"nœud, Penseiz à choisir un mot de passe sûr, que vous n'utilisez nulle part " "nœud, Penseiz à choisir un mot de passe sûr, que vous n'utilisez nulle part "
"ailleurs. <br /><br /> Si vous n'entrez pas de mot de passe, la connexion " "ailleurs. <br><br> Si vous n'entrez pas de mot de passe, la connexion "
"par mot de passe sera désactivée. La connexion par mot de passe est " "par mot de passe sera désactivée. La connexion par mot de passe est "
"désactivée par défaut." "désactivée par défaut."
......
...@@ -12,7 +12,7 @@ msgstr "" ...@@ -12,7 +12,7 @@ msgstr ""
msgid "" msgid ""
"Alternatively, you can set a password to access your node. Please choose a " "Alternatively, you can set a password to access your node. Please choose a "
"secure password you don't use anywhere else.<br /><br />If you set an empty " "secure password you don't use anywhere else.<br><br>If you set an empty "
"password, login via password will be disabled. This is the default." "password, login via password will be disabled. This is the default."
msgstr "" msgstr ""
......
...@@ -51,7 +51,7 @@ end ...@@ -51,7 +51,7 @@ end
local f_password = Form(translate("Password"), translate( local f_password = Form(translate("Password"), translate(
"Alternatively, you can set a password to access your node. Please choose a " "Alternatively, you can set a password to access your node. Please choose a "
.. "secure password you don't use anywhere else.<br /><br />If you set an empty " .. "secure password you don't use anywhere else.<br><br>If you set an empty "
.. "password, login via password will be disabled. This is the default." .. "password, login via password will be disabled. This is the default."
), 'password' ), 'password'
) )
......
<div class="gluon-value"> <div class="gluon-value">
<div class="gluon-value-title"> <div class="gluon-value-title">
<input data-update="change" type="radio" value="security"<%= attr("id", id..'.1') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "security") and "checked") %> /> <input data-update="change" type="radio" value="security"<%= attr("id", id..'.1') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "security") and "checked") %>>
<label<%= attr("for", id..'.1')%>></label> <label<%= attr("for", id..'.1')%>></label>
</div> </div>
<div class="gluon-value-field-long"> <div class="gluon-value-field-long">
<label<%= attr("for", id..'.1') %> class="gluon-value-title"><%:Security mode%></label> <label<%= attr("for", id..'.1') %> class="gluon-value-title"><%:Security mode%></label>
<br /> <br>
<%| translate( <%| translate(
'In security mode, the mesh VPN uses an encrypted tunnel to connect to the VPN servers. ' .. 'In security mode, the mesh VPN uses an encrypted tunnel to connect to the VPN servers. ' ..
'The encryption ensures that it is impossible for your internet access provider to see what ' .. 'The encryption ensures that it is impossible for your internet access provider to see what ' ..
'data is exchanged over your node.' 'data is exchanged over your node.'
) %> ) %>
<br /> <br>
</div> </div>
<div class="gluon-value-field-long-after"></div> <div class="gluon-value-field-long-after"></div>
</div> </div>
<div class="gluon-value gluon-value-last"> <div class="gluon-value gluon-value-last">
<div class="gluon-value-title"> <div class="gluon-value-title">
<input data-update="change" type="radio" value="performance"<%= attr("id", id..'.2') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "performance") and "checked") %> /> <input data-update="change" type="radio" value="performance"<%= attr("id", id..'.2') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "performance") and "checked") %>>
<label<%= attr("for", id..'.2')%>></label> <label<%= attr("for", id..'.2')%>></label>
</div> </div>
<div class="gluon-value-field-long"> <div class="gluon-value-field-long">
<label<%= attr("for", id..'.2') %> class="gluon-value-title"><%:Performance mode%></label> <label<%= attr("for", id..'.2') %> class="gluon-value-title"><%:Performance mode%></label>
<br /> <br>
<%| translate( <%| translate(
'In performance mode, no encryption is used. This usually allows for higher throughput, but the data exchanged over your node is not ' .. 'In performance mode, no encryption is used. This usually allows for higher throughput, but the data exchanged over your node is not ' ..
'protected against eavesdropping.' 'protected against eavesdropping.'
) %> ) %>
<br /> <br>
</div> </div>
<div class="gluon-value-field-long-after"></div> <div class="gluon-value-field-long-after"></div>
</div> </div>
...@@ -15,6 +15,6 @@ ...@@ -15,6 +15,6 @@
attr("name", id) .. attr("name", id) ..
attr("size", self.size) .. attr("size", self.size) ..
attr("placeholder", self.placeholder) attr("placeholder", self.placeholder)
%> /><br /> %>><br>
<% end %> <% end %>
</div> </div>
<form method="post" enctype="multipart/form-data" action="<%|url(request)%>" data-update="reset"> <form method="post" enctype="multipart/form-data" action="<%|url(request)%>" data-update="reset">
<input type="hidden" name="<%=id%>" value="1" /> <input type="hidden" name="<%=id%>" value="1">
<div class="gluon-form" id="form-<%=id%>"> <div class="gluon-form" id="form-<%=id%>">
<% if self.title and #self.title > 0 then %><h2 name="content"><%|self.title%></h2><% end %> <% if self.title and #self.title > 0 then %><h2 name="content"><%|self.title%></h2><% end %>
...@@ -16,12 +16,12 @@ ...@@ -16,12 +16,12 @@
<%- if self.submit ~= false then %> <%- if self.submit ~= false then %>
<input class="gluon-button gluon-button-submit" type="submit" value=" <input class="gluon-button gluon-button-submit" type="submit" value="
<%- if not self.submit then -%><%-:Save-%><%-else-%><%|self.submit%><%end-%> <%- if not self.submit then -%><%-:Save-%><%-else-%><%|self.submit%><%end-%>
" /> ">
<% end %> <% end %>
<%- if self.reset ~= false then %> <%- if self.reset ~= false then %>
<input class="gluon-button gluon-button-reset" type="reset" value=" <input class="gluon-button gluon-button-reset" type="reset" value="
<%- if not self.reset then -%><%-:Reset-%><%-else-%><%|self.reset%><%end-%> <%- if not self.reset then -%><%-:Reset-%><%-else-%><%|self.reset%><%end-%>
" /> ">
<% end %> <% end %>
</div> </div>
</form> </form>
<input data-update="click change" type="checkbox" value="1"<%= <input data-update="click change" type="checkbox" value="1"<%=
attr("id", id) .. attr("name", id) .. attr("id", id) .. attr("name", id) ..
attr("checked", self:cfgvalue() and "checked") attr("checked", self:cfgvalue() and "checked")
%> /> %>>
<label<%= attr("for", id)%>></label> <label<%= attr("for", id)%>></label>
<% <%
local br = self.orientation == "horizontal" and '&#160;&#160;&#160;' or '<br />' local br = self.orientation == "horizontal" and '&#160;&#160;&#160;' or '<br>'
local entries = self:entries() local entries = self:entries()
%> %>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
attr("name", id) .. attr("name", id) ..
attr("value", entry.key) .. attr("value", entry.key) ..
attr("checked", (self:cfgvalue() == entry.key) and "checked") attr("checked", (self:cfgvalue() == entry.key) and "checked")
%> /> %>>
<label<%= attr("for", id.."."..entry.key)%>></label> <label<%= attr("for", id.."."..entry.key)%>></label>
<%|entry.value%> <%|entry.value%>
</label> </label>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment