treewide: HTML Cleanup

* HTML Cleanup: Meta tags.
* Converted charset to shorthand.
* Removed meta tags with `Content-Script-Type` attribute. (Invalid in HTML5 spec.)

* HTML Cleanup: CSS tags.
* Removed `type` attribute with CSS files from link tags. (HTML5 spec recommends omitting it.)
* Removed `type` attribute from style tags. (Deprecated in HTML5 spec.)
https://html.spec.whatwg.org/#attr-link-type
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style

* HTML Cleanup: Convert from XHTML to HTML5
* Removed XML declaration.
* Removed XML namespace.
* Changed doctype to HTML5.

* HTML Cleanup: CDATA tags.
* CDATA sections should not be used within HTML they are considered as comments and not displayed.
https://developer.mozilla.org/en-US/docs/Web/API/CDATASection

* HTML Cleanup: Script tags.
* Removed `language` attribute from script tags. (No longer valid in HTML5)
* Removed `type` attribute with JavaScript MIME type from script tags. (HTML5 spec recommends omitting it.)
https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type
https://mimesniff.spec.whatwg.org/#javascript-mime-type

Signed-off-by: Mustafa Can Elmacı <mustafacan@elmaci.net>
This commit is contained in:
Mustafa Can Elmacı 2024-11-17 15:52:45 +03:00 committed by Paul Donald
parent aa955d6465
commit ae8bbb814f
54 changed files with 106 additions and 121 deletions

View File

@ -18,8 +18,8 @@
</div>
</div>
<script type="text/javascript" src="<%=resource%>/bmx7/js/polling.js"></script>
<script type="text/javascript">//<![CDATA[
<script src="<%=resource%>/bmx7/js/polling.js"></script>
<script>
new TablePooler(10,"/cgi-bin/bmx7-info", {'originators':''}, "nodes_div", function(st){
var originators = st.originators;
var res = Array();
@ -37,4 +37,4 @@
});
return res;
});
//]]></script>
</script>

View File

@ -22,8 +22,8 @@
-%>
<%+header%>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript" src="<%=resource%>/bmx7/js/polling.js"></script>
<script src="<%=resource%>/cbi.js"></script>
<script src="<%=resource%>/bmx7/js/polling.js"></script>
<style>
@ -88,7 +88,7 @@
</div>
<script type="text/javascript">//<![CDATA[
<script>
var displayExtraInfo = function ( id ) {
document.getElementById('extra-info').innerHTML = document.getElementById(id).innerHTML;
}
@ -150,6 +150,6 @@
});
return res;
});
//]]></script>
</script>
<%+footer%>

View File

@ -1,6 +1,6 @@
<%+header%>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript" src="<%=resource%>/bmx7/js/polling.js"></script>
<script src="<%=resource%>/cbi.js"></script>
<script src="<%=resource%>/bmx7/js/polling.js"></script>
<div class="cbi-map">
<center>
@ -87,7 +87,7 @@
</div>
<script type="text/javascript">//<![CDATA[
<script>
new TablePooler(10,"/cgi-bin/bmx7-info", {'info':''}, "config_div", function(st){
var res = Array();
var sta = st.info[0].status;
@ -125,6 +125,6 @@
return res;
});
//]]></script>
</script>
<%+footer%>

View File

@ -1,9 +1,9 @@
<%+header%>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.12/d3.min.js" integrity="sha512-uy3foVtL4u0+5430l7zZt4PHjVtICfrbu3mtzdanR425sKD7kS5264djeZAzNIV0l4vc1QkFpW2+G5i5KoJIFQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script type="text/javascript" src="<%=resource%>/bmx7/js/netjsongraph.js"></script>
<script src="<%=resource%>/bmx7/js/netjsongraph.js"></script>
<link href="<%=resource%>/bmx7/css/netjsongraph.css" rel="stylesheet">
<style type="text/css">
<style>
body {
font-family: Arial, sans-serif;
font-size: 13px;

View File

@ -22,8 +22,8 @@
<%+header%>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript" src="<%=resource%>/bmx7/js/polling.js"></script>
<script src="<%=resource%>/cbi.js"></script>
<script src="<%=resource%>/bmx7/js/polling.js"></script>
<div class="cbi-map">
<h2>Gateway announcements</h2>
@ -50,7 +50,7 @@
</div>
<script type="text/javascript">//<![CDATA[
<script>
new TablePooler(5,"/cgi-bin/bmx7-info", {'tunnels':''}, "tunnels_div", function(st){
var tunicon = "<%=resource%>/icons/tunnel.png";
var tunicon_dis = "<%=resource%>/icons/tunnel_disabled.png";
@ -71,6 +71,6 @@
}
return res;
});
//]]></script>
</script>
<%+footer%>

View File

@ -28,7 +28,7 @@
` });
-%}
<script type="text/javascript">//<![CDATA[
<script>
function command_run(ev, id)
{
var field = document.getElementById(id);
@ -113,7 +113,7 @@
ev.preventDefault();
}
//]]></script>
</script>
{%
const commands = [];

View File

@ -82,7 +82,7 @@ $Id$
<hr/>
<script type="text/javascript">//<![CDATA[
<script>
var capture_running = 0;
var pid_file = 0;
@ -287,4 +287,4 @@ $Id$
check_status();
link_list_update();
//]]></script>
</script>

View File

@ -1,4 +1,4 @@
<style type="text/css">
<style>
#docker_apply_overlay {
position: absolute;
top: 0;
@ -42,7 +42,7 @@
}
</style>
<script type="text/javascript">//<![CDATA[
<script>
var xhr = new XHR(),
uci_apply_rollback = <%=math.max(luci.config and luci.config.apply and luci.config.apply.rollback or 90, 90)%>,
uci_apply_holdoff = <%=math.max(luci.config and luci.config.apply and luci.config.apply.holdoff or 4, 1)%>,
@ -144,4 +144,4 @@
});
}
//]]></script>
</script>

View File

@ -9,7 +9,7 @@
<li id="cbi-tab-container_logs"><a id="a-cbi-tab-container_logs" href=""><%:Logs%></a></li>
</ul>
<script type="text/javascript">
<script>
let re = /\/admin\/docker\/container\//
let p = window.location.href
let path = p.split(re)

View File

@ -1,6 +1,6 @@
<div class="cbi-map">
<iframe id="terminal" style="width: 100%; min-height: 500px; border: none; border-radius: 3px;"></iframe>
</div>
<script type="text/javascript">
<script>
document.getElementById("terminal").src = "http://" + window.location.hostname + ":7682";
</script>

View File

@ -15,7 +15,7 @@
</div>
</div>
<script type="text/javascript">
<script>
let btnUpload = document.getElementById('upload')
btnUpload.onclick = function (e) {
let uploadArchive = document.getElementById('upload_archive')

View File

@ -1,4 +1,4 @@
<script type="text/javascript">//<![CDATA[
<script>
let last_bw_tx
let last_bw_rx
let interval = 3
@ -78,4 +78,4 @@
}
});
//]]></script>
</script>

View File

@ -5,7 +5,7 @@
<input type="file" id="file_import" style="visibility:hidden; position: absolute;top: 0px; left: 0px;" />
</div>
<script type="text/javascript">
<script>
let btnImport = document.getElementById('btnimport')
let valISrc = document.getElementById('isrc')
let valITag = document.getElementById('itag')

View File

@ -2,7 +2,7 @@
<input type="button"" class="btn cbi-button cbi-button-add" id="btnload" name="load" value="<%:Load%>" />
<input type="file" id="file_load" style="visibility:hidden; position: absolute;top: 0px; left: 0px;" accept="application/x-tar" />
</div>
<script type="text/javascript">
<script>
let btnLoad = document.getElementById('btnload')
btnLoad.onclick = function (e) {
document.getElementById("file_load").click()

View File

@ -1,4 +1,4 @@
<style type="text/css">
<style>
#dialog_reslov {
position: absolute;
top: 0;
@ -50,7 +50,7 @@
}
</style>
<script type="text/javascript">
<script>
function close_reslov_dialog() {
document.body.classList.remove('dialog-reslov-active')
document.documentElement.style.overflowY = 'scroll'

View File

@ -1,4 +1,4 @@
<script type="text/javascript">//<![CDATA[
<script>
XHR.poll(-1, '<%=url('admin/telephony/status')%>', null,
function(x, st)
{
@ -14,7 +14,7 @@ XHR.poll(-1, '<%=url('admin/telephony/status')%>', null,
}
}
);
//]]></script>
</script>
<fieldset class="cbi-section">
<legend><%:Current Telephony State%></legend>

View File

@ -64,8 +64,7 @@ local target = nx.uname().machine
<hr />
<script type="text/javascript">
//<![CDATA[
<script>
window.img = { "red" : "<%=resource%>/cbi/red.gif", "green" : "<%=resource%>/cbi/green.gif", "purple" : "<%=resource%>/cbi/purple.gif" };
window.states = { "STOPPED" : "red", "RUNNING" : "green", "FROZEN" : "purple" };
@ -502,5 +501,4 @@ local target = nx.uname().machine
})
lxc_list_update();
//]]>
</script>

View File

@ -5,7 +5,7 @@
<%+header%>
<script type="text/javascript">//<![CDATA[
<script>
var bwxhr = new XHR();
var RC = { };
@ -120,7 +120,7 @@
}
}, 1000
);
//]]></script>
</script>
<h2 name="content"><%:Realtime Rate%></h2>

View File

@ -1,4 +1,4 @@
<script type="text/javascript">//<![CDATA[
<script>
function ocserv_disconnect(idx) {
(new XHR()).post('<%=url('admin/vpn/ocserv/disconnect')%>/' + idx, { token: '<%=token%>' },
@ -42,7 +42,7 @@
}
}
);
//]]></script>
</script>
<fieldset class="cbi-section">
<legend><%:Active OpenConnect Users%></legend>

View File

@ -14,7 +14,7 @@ call)
jsonreq4=$(
cat <<EOF
<script language='JavaScript1.2' type='text/javascript'>
<script>
EOF
# sed + txtinfo plugin

View File

@ -1,6 +1,5 @@
<?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">
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci/freifunk/olsr/neighbors" />
</head>

View File

@ -1,6 +1,5 @@
<script type="text/javascript">
//<![CDATA[
<script>
function vpn_add()
{
var vpn_name = div_add.querySelector("#instance_name1").value.replace(/[^\x00-\x7F]|[\s\.!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,'');
@ -68,7 +67,6 @@
setTimeout(function(){ output.innerHTML=""}, timeout);
}
}
//]]>
</script>
<%+openvpn/ovpn_css%>

View File

@ -1,4 +1,4 @@
<style type="text/css">
<style>
h4
{
white-space: nowrap;

View File

@ -1,6 +1,6 @@
<!-- ++ BEGIN ++ Privoxy ++ detail_logview.htm ++ -->
<script type="text/javascript">//<![CDATA[
<script>
function onclick_logview(section, bottom) {
// get elements
var txt = document.getElementById("cbid.privoxy.privoxy._logview.txt"); // TextArea
@ -18,7 +18,7 @@
txt.scrollTop = 0; }
);
}
//]]></script>
</script>
<%+cbi/valueheader%>

View File

@ -1,6 +1,6 @@
<!-- ++ BEGIN ++ Privoxy ++ detail_startstop.htm ++ -->
<script type="text/javascript">//<![CDATA[
<script>
// show XHR.poll/XHR.get response on button
function _data2elements(x) {
@ -30,7 +30,7 @@
function(x, data) { _data2elements(x); }
);
//]]></script>
</script>
<%+cbi/valueheader%>

View File

@ -1,6 +1,6 @@
<!-- ++ BEGIN ++ Radicale ++ btn_startstop.htm ++ -->
<script type="text/javascript">//<![CDATA[
<script>
// show XHR.poll/XHR.get response on button
function _data2elements(x) {
@ -30,7 +30,7 @@
function(x, data) { _data2elements(x); }
);
//]]></script>
</script>
<%+cbi/valueheader%>

View File

@ -13,7 +13,7 @@
<%+cbi/apply_widget%>
<% cbi_apply_widget() %>
<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
<script type="text/javascript">
<script>
document.addEventListener("DOMContentLoaded", function() {
<% if confirmmap then -%>
uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);

View File

@ -13,7 +13,7 @@ end
http_port = "5232"
end
%>
<script type="text/javascript">
<script>
<%
if usessl then
%>

View File

@ -1,6 +1,5 @@
<?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">
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci/splash" />
</head>

View File

@ -134,7 +134,7 @@ end
<%+header%>
<script type="text/javascript">//<![CDATA[
<script>
XHR.poll(10 , '<%=REQUEST_URI%>', { status: 1 },
function(x, info)
@ -190,7 +190,7 @@ end
}
}
);
//]]></script>
</script>
<div id="cbi-splash-leases" class="cbi-map">

View File

@ -1,4 +1,4 @@
<style type="text/css">
<style>
textarea
{
background-color: #fffff0;

View File

@ -192,5 +192,5 @@ Each theme must include this file in the `<head>` area of the document for forms
It should be included like this:
```html
<script type="text/javascript" src="<%=resource%>/xhr.js"></script>
<script src="<%=resource%>/xhr.js"></script>
```

View File

@ -53,7 +53,7 @@ Put any stylesheets, Javascripts, images, ... into `htdocs/luci-static/mytheme`.
Refer to this directory in your header and footer templates as: `<%=media%>`.
That means for a stylesheet `htdocs/luci-static/mytheme/cascade.css` you would write:
```html
<link rel="stylesheet" type="text/css" href="<%=media%>/cascade.css" />
<link rel="stylesheet" href="<%=media%>/cascade.css" />
```
## Making the theme selectable

View File

@ -1,10 +1,8 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
//<![CDATA[
<script>
var version = {major: 2, minor: 1, revision: 3, date: new Date("Nov 3, 2006"), extensions: {}};
//]]>
</script>
<!--
TiddlyWiki 2.1.3 by Jeremy Ruston, (jeremy [at] osmosoft [dot] com)
@ -36,15 +34,14 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
-->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<meta charset="utf-8"/>
<!--PRE-HEAD-START-->
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->
<!--PRE-HEAD-END-->
<title> axTLS Embedded SSL - changes, notes and errata </title>
<script type="text/javascript">
//<![CDATA[
<script>
// ---------------------------------------------------------------------------------
// Configuration repository
// ---------------------------------------------------------------------------------
@ -7013,9 +7010,8 @@ merge(config.shadowTiddlers,{SiteSubtitle:"a theme for ~TiddlyWiki"});
merge(config.shadowTiddlers,{DefaultTiddlers:"LorumIpsum"});
merge(config.shadowTiddlers,{LorumIpsum:"Aenean eros arcu, condimentum nec, dapibus ut, tincidunt sit amet, urna. Quisque viverra, eros sed imperdiet iaculis, est risus facilisis quam, id malesuada arcu nulla luctus urna. Nullam et est. Vestibulum velit sem, faucibus cursus, dapibus vestibulum, pellentesque et, urna. Donec luctus. Donec lectus. Aliquam eget eros facilisis tortor feugiat sollicitudin. Integer lobortis vulputate sapien. Sed iaculis erat ac nunc. Etiam eu enim. Mauris ipsum urna, rhoncus at, bibendum sit amet, euismod eget, dolor. Mauris fermentum quam vitae ligula. Vestibulum in libero feugiat justo dictum consectetuer. Vestibulum euismod purus eget elit. Nunc sed massa porta elit bibendum posuere. Nunc pulvinar justo sit amet odio. In sed est. Phasellus ornare elementum nulla. Nulla ipsum neque, cursus a, viverra a, imperdiet at, enim. Quisque facilisis, diam sed accumsan suscipit, odio arcu hendrerit dolor, quis aliquet massa nulla nec sem.\n!heading 1\n!!heading 2\n!!!heading3\n----\n<<tag button>>\nThis is a link to a [[StyleSheet]] tiddler.\n\n> This is a blockquote\n> This is a blockquote\n> This is a blockquote\n|>|>| !This is a header |h\n|column1|column2|column3|\n|row2| row2 |row2|\n|column1|column2|column3|\n|row2| row2 |row2|\n|column1|column2|column3|\n|row2| row2 |row2|"});
// ---------------------------------------------------------------------------------
//]]>
</script>
<style type="text/css">
<style>
#saveTest {
display: none;
@ -7069,11 +7065,9 @@ merge(config.shadowTiddlers,{LorumIpsum:"Aenean eros arcu, condimentum nec, dapi
<!--PRE-BODY-START-->
<!--PRE-BODY-END-->
<script type="text/javascript">
//<![CDATA[
<script>
if (useJavaSaver)
document.write("<applet style='position:absolute;left:-1px' name='TiddlySaver' code='TiddlySaver.class' archive='TiddlySaver.jar' width='1' height='1'></applet>");
//]]>
</script>
<div id="copyright">
Welcome to TiddlyWiki by Jeremy Ruston, Copyright &copy; 2006 Osmosoft Limited

View File

@ -1,13 +1,12 @@
<?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">
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Expires" content="Thu, 01 Jan 1970 00:00:00 GMT" />
<meta http-equiv="refresh" content="0; URL=cgi-bin/luci/" />
<style type="text/css">
<style>
body { background: white; font-family: arial, helvetica, sans-serif; }
a { color: black; }

View File

@ -4,7 +4,7 @@
-#}
<!--]]>--><!--'>--><!--">-->
<style type="text/css">
<style>
body {
line-height: 1.5;
font-size: 14px;

View File

@ -5,7 +5,7 @@
{% const rollback = dispatcher.rollback_pending() %}
{% if (rollback || trigger_apply || trigger_revert): %}
<script type="text/javascript">
<script>
document.addEventListener("luci-loaded", function() {
{% if (trigger_apply): %}
L.ui.changes.apply(true);
@ -19,7 +19,7 @@
{% endif %}
{% if (media_error): %}
<script type="text/javascript">
<script>
L.require('ui').then(function(ui) {
ui.showIndicator('media_error', _('Theme fallback'), function(ev) {
ui.showModal(_('Error loading theme'), [

View File

@ -7,9 +7,9 @@
include(`themes/${theme}/header`);
-%}
<script type="text/javascript" src="{{ resource }}/promis.min.js"></script>
<script type="text/javascript" src="{{ resource }}/luci.js"></script>
<script type="text/javascript">
<script src="{{ resource }}/promis.min.js"></script>
<script src="{{ resource }}/luci.js"></script>
<script>
L = new LuCI({{ replace(`${ {
media : media,
resource : resource,

View File

@ -52,7 +52,7 @@
));
%}
<script type="text/javascript">//<![CDATA[
<script>
var input = document.getElementsByName('luci_password')[0];
if (input)
@ -69,6 +69,6 @@
setTimeout(function() { img.src = '' }, 5000);
});
}
//]]></script>
</script>
{% include('footer') %}

View File

@ -2,7 +2,7 @@
<div id="view">
<div class="spinning">{{ _('Loading view…') }}</div>
<script type="text/javascript">
<script>
L.require('ui').then(function(ui) {
ui.instantiateView('{{ view }}');
});

View File

@ -20,5 +20,5 @@
<input class="btn cbi-button cbi-button-back" type="submit" name="cbi.delg.back" value="<%:« Back%>" />
<% end %>
<% end %>
<script type="text/javascript">cbi_d_update();</script>
<script>cbi_d_update();</script>
</div>

View File

@ -36,6 +36,6 @@
</form>
<script type="text/javascript">cbi_init();</script>
<script>cbi_init();</script>
<%+footer%>

View File

@ -1,5 +1,5 @@
<%+cbi/valueheader%>
<script type="text/javascript">
<script>
function switchToCIDRList(ev) {
var input = ev.target.previousElementSibling,
usecidr = document.getElementById(input.id + '_usecidr');

View File

@ -74,4 +74,4 @@
end
%>
<script type="text/javascript">cbi_init();</script>
<script>cbi_init();</script>

View File

@ -1,6 +1,6 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
<script>
var freqlist = <%= luci.http.write_json(self.iwinfo.freqlist) %>;
var hwmodes = <%= luci.http.write_json(self.iwinfo.hwmodelist or {}) %>;
var htmodes = <%= luci.http.write_json(self.iwinfo.htmodelist) %>;
@ -176,7 +176,7 @@
bwdt.value = <%= luci.http.write_json(self.map:get(section, "htmode")) %>;
chan.value = <%= luci.http.write_json(self.map:get(section, "channel")) %>;
}
//]]></script>
</script>
<label style="float:left; margin-right:3px">
<%:Mode%><br />
@ -196,6 +196,6 @@
</label>
<br style="clear:left" />
<script type="text/javascript">cbi_init_wifi('<%= cbid %>');</script>
<script>cbi_init_wifi('<%= cbid %>');</script>
<%+cbi/valuefooter%>

View File

@ -12,7 +12,7 @@
<div class="spinning">{{ _('Loading view…') }}</div>
</div>
<script type="text/javascript">//<![CDATA[
<script>
function progressbar(query, value, max, byte)
{
var pg = document.querySelector(query),
@ -46,7 +46,7 @@ function renderBadge(icon, title) {
]);
}
//]]></script>
</script>
<div class="includes" style="display:none">
{%
@ -60,7 +60,7 @@ function renderBadge(icon, title) {
%}
</div>
<script type="text/javascript">
<script>
L.require('ui').then(function(ui) {
ui.instantiateView('status/index');
});

View File

@ -14,7 +14,7 @@
</span>
<ul class="breadcrumb pull-right" id="modemenu" style="display:none"></ul>
</footer>
<script type="text/javascript">L.require('menu-bootstrap')</script>
<script>L.require('menu-bootstrap')</script>
{% endif %}
</body>
</html>

View File

@ -20,7 +20,7 @@
<meta charset="utf-8">
<title>{{ striptags(`${boardinfo.hostname ?? '?'}${node ? ` - ${node.title}` : ''}`) }} - LuCI</title>
{% if (!darkpref): %}
<script type="text/javascript">
<script>
var mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'),
rootElement = document.querySelector(':root'),
setDarkMode = function(match) { rootElement.setAttribute('data-darkmode', match.matches) };
@ -31,7 +31,7 @@
{% endif %}
<meta name="viewport" content="initial-scale=1.0">
<link rel="stylesheet" href="{{ media }}/cascade.css">
<link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="{{ media }}/mobile.css" type="text/css" />
<link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="{{ media }}/mobile.css" />
<link rel="icon" href="{{ media }}/logo_48.png" sizes="48x48">
<link rel="icon" href="{{ media }}/logo.svg" sizes="any">
{% if (node?.css): %}

View File

@ -38,7 +38,7 @@
<div id="view">
<div class="spinning">{{ _('Loading view…') }}</div>
<script type="text/javascript">
<script>
L.require('ui').then(function(ui) {
ui.instantiateView('bootstrap.sysauth');
});

View File

@ -26,7 +26,7 @@
</div>
</div>
<script type="text/javascript">L.require('menu-material')</script>
<script>L.require('menu-material')</script>
</body>
</html>

View File

@ -10,7 +10,7 @@
Powered by {{ version.luciname }} ({{ version.luciversion }})
</p>
<script type="text/javascript">L.require('menu-openwrt2020')</script>
<script>L.require('menu-openwrt2020')</script>
</body>
</html>

View File

@ -14,15 +14,14 @@
<!DOCTYPE html>
<html lang="{{ dispatcher.lang }}">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="stylesheet" type="text/css" media="screen" href="{{ media }}/cascade.css" />
<link rel="stylesheet" media="screen" href="{{ media }}/cascade.css" />
<link rel="icon" href="{{ media }}/logo.png" sizes="180x180">
<link rel="icon" href="{{ media }}/logo.svg" sizes="any">
<script type="text/javascript" src="{{ dispatcher.build_url('admin/translations', dispatcher.lang) }}"></script>
<script type="text/javascript" src="{{ resource }}/cbi.js"></script>
<script src="{{ dispatcher.build_url('admin/translations', dispatcher.lang) }}"></script>
<script src="{{ resource }}/cbi.js"></script>
<title>{{ striptags(`${boardinfo.hostname ?? '?'}${node ? ` - ${node.title}` : ''}`) }} - LuCI</title>
{% if (css): %}
<style title="text/css">{{ css }}</style>

View File

@ -12,7 +12,7 @@
Powered by {{ version.luciname }} ({{ version.luciversion }})
</p>
<script type="text/javascript">L.require('menu-openwrt')</script>
<script>L.require('menu-openwrt')</script>
</body>
</html>

View File

@ -16,18 +16,17 @@
<!DOCTYPE html>
<html lang="{{ dispatcher.lang }}">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" type="text/css" media="screen" href="{{ media }}/cascade.css" />
<link rel="stylesheet" media="screen" href="{{ media }}/cascade.css" />
{% if (node?.css): %}
<link rel="stylesheet" type="text/css" media="screen" href="{{ resource }}/{{ node.css }}" />
<link rel="stylesheet" media="screen" href="{{ resource }}/{{ node.css }}" />
{% endif %}
{% if (css): %}
<style type="text/css">{{ css }}</style>
<style>{{ css }}</style>
{% endif %}
<script type="text/javascript" src="{{ dispatcher.build_url('admin/translations', dispatcher.lang) }}"></script>
<script type="text/javascript" src="{{ resource }}/cbi.js"></script>
<script src="{{ dispatcher.build_url('admin/translations', dispatcher.lang) }}"></script>
<script src="{{ resource }}/cbi.js"></script>
<title>{{ striptags(`${boardinfo.hostname ?? '?'}${node ? ` - ${_(node.title)}` : ''}`) }} - LuCI</title>
</head>