Inject persistent top navbar (with printer switcher) into proxied Brother pages

This commit is contained in:
randy committed 2026-09-12 00:34:14 +02:00
1 parent daa39320a6
commit 1cc03d8451
3 files changed
+34 -22

No files matched your search

+6 -1
View File
@@ -102,13 +102,18 @@ helpers do
res = Net::HTTP.start(uri.host, uri.port) { |http| http.request(proxied) }
body = res.body || ''
if res['Content-Type']&.include?('text/html')
body = body.sub(/(<body[^>]*>)/i) { "#{Regexp.last_match(1)}\n#{erb(:_navbar, layout: false)}" }
end
headers = {}
res.each_header do |key, value|
next if %w[transfer-encoding connection content-length].include?(key.downcase)
headers[key] = value
end
[res.code.to_i, headers, [res.body || '']]
[res.code.to_i, headers, [body]]
end
end
+27
View File
@@ -0,0 +1,27 @@
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="/">Print server</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/upload">Shipping labels</a>
</li>
</ul>
<span class="navbar-text me-2">Brother:</span>
<div class="d-flex gap-1">
<% BROTHER_PRINTERS.each do |key, info| %>
<form action="/brother/select" method="POST" class="m-0">
<input type="hidden" name="printer" value="<%= key %>">
<button type="submit" class="btn btn-sm <%= session[:brother_printer] == key ? 'btn-primary' : 'btn-outline-secondary' %>"><%= info[:label].sub('Brother ', '') %></button>
</form>
<% end %>
</div>
</div>
</div>
</nav>
+1 -21
View File
@@ -10,27 +10,7 @@
</head>
<body>
<div class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="/">Print server</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/upload">Shipping labels</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/brother">Brother printers</a>
</li>
</ul>
</div>
</div>
</nav>
<%= erb :_navbar, layout: false %>
<div class="row">
<% if @alert_success then %>
<div class="alert alert-success"><%=@alert_success%></div>