Commit Graph
56 Commits
Author SHA1 Message Date
RD WebDesignandGitHub d156625334 Merge branch 'development' into new/adminLTE4
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2026-08-02 17:51:10 -03:00
yubiuser db57bf1e06 Filter table-selected upstreams from the custom upstream server input field
Signed-off-by: yubiuser <github@yubiuser.dev>
2026-07-31 21:17:10 +02:00
yubiuser 4914bf747e Simplify selector
Signed-off-by: yubiuser <github@yubiuser.dev>
2026-07-28 22:14:48 +02:00
RD WebDesignandAdam Warner 61f6c982b7 Use the new AdminLTE header structure
- remove old `.page-title` from all pages;
- add the the new header structure and place the title inside the new
  `.app-content-header` element;

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2026-07-17 22:43:25 +01:00
0153772cf5 Swap remaining jQuery plugins for Bootstrap 5-compatible versions
- DataTables: replace the combined BS3 download-builder bundles with
  the official core + Bootstrap 5 styling-adapter package pairs
  (datatables.net(-buttons/-select) + datatables.net-bs5/-buttons-bs5/
  -select-bs5), loaded core-then-adapter.
- bootstrap-select -> Tom Select: bootstrap-select has no Bootstrap 5
  build. Add utils.createGroupSelect(), a small wrapper around Tom
  Select that recreates bootstrap-select's actionsBox (Select all/
  Select none) via a couple of buttons injected into the dropdown, and
  use it for all four "assign to group(s)" multi-selects (groups,
  groups/clients, groups/domains, groups/lists). Two behavioral fixes
  were needed to match the old widget: `hideSelected: false` (Tom
  Select refuses to open its dropdown once every option is already
  selected, which made the actions box unreachable) and
  `dropdownParent: "body"` (otherwise the dropdown is clipped by the
  surrounding .table-responsive/.card ancestors' overflow, same reason
  bootstrap-select was configured with container: "body").
- bootstrap-toggle -> bootstrap5-toggle: drop-in replacement, same
  $.fn.bootstrapToggle() API and onstyle/offstyle option names (all
  call sites already used Bootstrap 5-valid color names).
- select2: bump to 4.1.0 and add the select2-bootstrap-5-theme package
  for correct Bootstrap 5 styling; wire theme: "bootstrap-5" into both
  call sites.
- Remove now-dead bootstrap-select cleanup code (the
  "$('body > .bootstrap-select.dropdown').remove()" DataTables
  drawCallback lines across 8 files) and dead icheck/bootstrap-select
  CSS in pi-hole.css.

Also fixed a Phase 1 regression surfaced by this pass: utils.js's
loadingOverlay() still targeted the old ".wrapper" class instead of
".app-wrapper", throwing whenever a settings page triggered the
Save & Apply overlay.

Verified against a live container: groups/clients' per-row Tom Select
multiselect (open dropdown, Select all/none, Apply, restore-on-cancel),
bootstrap5-toggle switches on groups, select2 filters on the query log,
and DataTables' select/export button row on groups/lists all work with
zero console errors. Settings pages' Save & Apply overlay confirmed
fixed and no longer throwing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2026-07-17 22:39:57 +01:00
3d5193154a Replace icheck-bootstrap checkboxes/radios with native Bootstrap 5 form-check
Convert all 35 static checkbox/radio inputs across 9 templates (queries,
search, settings-api, settings-dhcp, groups-domains, settings-dns,
settings-privacy, settings-teleporter) plus the dynamically-generated
ones (settings-advanced.js's per-setting boolean/enum controls,
settings-dns.js's DNS-upstream picker) from icheck-bootstrap's
JS-post-processed styling to Bootstrap 5's native .form-check/
.form-check-input/.form-check-label markup, which needs no JS at all.

Remove footer.js's applyCheckboxRadioStyle() (and its call sites in
settings-advanced.js/settings-dns.js) entirely - it used to strip and
re-add classes on every checkbox/radio's parent after page load, which
would have destroyed the new static .form-check classes at runtime.
Drop the icheck-bootstrap dependency, its vendor CSS and the <link> in
header.lp, and replace its now-dead pseudo-element checkbox styling in
pi-hole.css with a couple of plain .form-check-input/.form-check-label
rules for the one spot that needs a smaller checkbox size (the domain
list's filter-by-type row).

Two "no-icheck"-excluded checkboxes (a table-header select-all in both
settings-dns.lp and settings-dns.js) are left as bare native checkboxes,
matching their original deliberate exclusion.

Also confirmed pi-hole's own text-red/text-green/bg-*/etc. color utility
classes are unaffected by the AdminLTE core removal - each theme file
already defines them fully rather than only overriding an AdminLTE base,
so no fix was needed there.

Verified against a live container: settings/dns (checkbox/radio styling,
custom-servers card-collapse toggle) and settings/privacy (privacy-level
radios) render correctly with zero console errors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2026-07-17 22:39:57 +01:00
3149820eb4 Convert box/panel markup to Bootstrap 5 cards across all pages
Convert the remaining 20 .lp templates from AdminLTE 2's .box/.panel
component family to Bootstrap 5 .card markup, matching the pattern
established in index.lp/queries.lp during the layout migration:
box/box-header/box-title/box-body/box-footer -> card equivalents,
box-info/-danger/-warning etc. -> card-info/-danger/-warning +
card-outline for the non-solid variant, collapsed-box + data-widget
-> collapsed-card + data-lte-toggle="card-collapse" with the dual
expand/collapse icon AdminLTE 4 expects. Also renames the accompanying
Bootstrap-3-isms throughout (col-xs-*, pull-left/right, input-group-addon,
data-toggle/-dismiss/-backdrop/-keyboard, label -> badge, btn-default,
BS3 modal close-button markup).

Fix the JS-side selectors that referenced the old markup and would have
silently broken once the classes changed: charts.js's tooltip anchor
lookup, footer.js's "no visible cards" redirect check, login.js's
2FA/forgot-password card color swap (plus made both boxes consistently
non-solid so the swap doesn't need to touch card-outline), and
settings-advanced.js's dynamically generated settings cards and its
manual Bootstrap 3 "in"/"active" tab-pane class toggling (Bootstrap 5
renamed .in to .show). Rewrite settings-dhcp.js's jQuery-plugin tooltip
delegation (`$("body").tooltip(...)`, `.tooltip("hide")`) as a small
lazily-instantiating delegated listener plus direct bootstrap.Tooltip
calls, since Bootstrap 5 dropped jQuery integration entirely and the
DHCP lease action buttons are added to the DOM dynamically. Restore
Bootstrap 3's .has-error/.has-warning/.has-success form-validation
color feedback in pi-hole.css, since Bootstrap 5 dropped those classes
in favor of .is-invalid/.is-valid and a couple of pages still toggle
the old class names for simple color-coded feedback.

Refresh package-lock.json for the admin-lte/bootstrap version bump from
the previous commit.

Verified against a live container: dashboard, query log (incl. the
collapsible advanced-filter card and populated DataTable), groups/lists,
groups/domains, and settings/dns all render correctly with zero console
errors; card-collapse toggling confirmed working on the query log's
filter card. Plugin-styled elements (select2/bootstrap-select dropdowns,
DataTables chrome, icheck checkboxes, bootstrap-toggle switches, nav-tabs)
still look wrong until the JS-plugin-swap phase lands, as expected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2026-07-17 22:38:11 +01:00
Adam WarnerandRD WebDesign f79f71f415 Add DoT/DoH tabs to the Upstream DNS Servers picker
FTL's DoT/DoH client work (pi-hole/FTL#2940) pins tls:// and https://
URIs onto the well-known resolver list, but the picker only rendered
checkboxes for the plain addresses.

- Plain / DoT / DoH tabs, one checkbox per address family per tab
- DoT/DoH tabs omit vendors with no pinned URI for that protocol,
  instead of showing empty rows
- keeps the table narrow as more protocols (DoQ, DoH3, ...) get added
- each tab shows a label with how many upstreams are selected there,
  positioned top-right with a tooltip, per rdwebdesign's review
  comments

Co-authored-by: RD WebDesign <github@rdwebdesign.com.br>
Signed-off-by: Adam Warner <github@promofaux.dev>
2026-07-17 22:19:11 +01:00
RD WebDesign c7f467a06a Add button title and remove unused attribute
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2026-06-13 21:50:19 -03:00
RD WebDesign 770a7ca8b5 Add validation to editabled table cells and simplify the table
- remove `<input>` tags and add contenteditable attribute to all
  editable cells
- rows are always enabled now (no "edit" button to enable them)
- Simplify javascript code:
  - use classNames to simplify column selection, instead of unique ids
  - use datatables "columnDefs" and "createdCell" to add attributes
  - use CSS class "editing" and CSS rules to handle buttons
- remove unused and unnecessary attributes from elements

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2026-06-13 21:50:14 -03:00
RD WebDesign 7797db6751 Remove unnecessary attribute
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2026-06-13 17:36:16 -03:00
RD WebDesign e7b0b778c9 Use a table to show and edit Reverse DNS Servers
- add functions and buttons to add, modify, undo changes and delete lines
- generate the table using data already on the textarea
- add functions to read textarea contents and parse then into an array
- add functions to update the textarea contents from the table
- hide the textarea. Only the table will be visible
- make sure the table is not shown when the option was set by ENV VARS
- move some help paragraphs to the table legend
- remove usused original help text for the textarea
- use fixed size for all action buttons
- don't use "icheck" styling on the checkboxes in the table

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2026-06-13 16:54:05 -03:00
yubiuser 8e9658e099 Rename config key dns.domain > dns.domain.name
Signed-off-by: yubiuser <github@yubiuser.dev>
2025-09-28 10:42:12 +02:00
yubiuser db00480088 Remove query type from domainNeeded option
Signed-off-by: yubiuser <github@yubiuser.dev>
2025-07-09 21:27:02 +02:00
Adam WarnerandGitHub 387ad34927 settings-dns: expand custom servers box if it has custom servers (#3514) 2025-06-29 12:28:48 +02:00
yubiuser 156a687cf5 Remove link to rate limit documentation which does not add further details
Signed-off-by: yubiuser <github@yubiuser.dev>
2025-06-21 22:27:46 +02:00
XhmikosR 65e2917b74 settings-dns: expand custom servers box if it has custom servers
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-06-21 08:45:53 +03:00
XhmikosR 8529cb067c Fix a few HTML validation issues
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-06-16 09:32:51 +03:00
Adam WarnerandGitHub abd4d9d3b9 settings-level-expert: hide them by default (#3487) 2025-05-30 21:35:56 +01:00
casperklein f3fd182d00 Add rel="noreferrer" to external hyperlinks
Signed-off-by: casperklein <casperklein@users.noreply.github.com>
2025-05-29 22:57:36 +02:00
XhmikosR a18629193a settings-level-expert: hide them by default
Matches the previous behavior before 8556b65

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-05-27 20:59:05 +03:00
XhmikosR 8556b65b2e settings-level-expert: only toggle the expert elements
Show the basic ones by default. Also, reduce jQuery usage in those functions while at it.

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-05-19 09:49:10 +03:00
XhmikosR e246d41055 index: make tables stripped
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-05-05 15:50:30 +03:00
XhmikosR 4ef92fc5e4 Add missing display: none for collapsed boxes
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-04-30 19:04:09 +03:00
XhmikosR 2dd128fbfb Revert the defer addition for now
There are still cases we are getting TypeErrors. We should try again after grouping our assets together in all pages.

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-04-03 07:52:28 +03:00
yubiuser eec7622ef4 Fix typo in advanced DNS help text
Signed-off-by: yubiuser <github@yubiuser.dev>
2025-03-28 16:16:06 +01:00
XhmikosR 1acb80536b Refactor assets loading
* move fonts first
* move CSS and JS along with the rest
* move default auto theme media checks to the HEAD instead of imports

Also, use `script defer`. This makes the JS files non-blocking.

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-03-23 07:08:37 +02:00
XhmikosR 6a5b40f7bf Add missing rel="noopener" for external links
Signed-off-by: XhmikosR <xhmikosr@gmail.com>
2025-03-21 16:54:22 +02:00
RD WebDesign 566bf15cd9 Use <code> tag to show the interface name
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-02-27 23:31:08 -03:00
yubiuser 7c04234888 Amend dns.domain
Signed-off-by: yubiuser <github@yubiuser.dev>
2025-02-22 14:18:54 +01:00
yubiuser ad9764b498 Amend advanced DNS warning
Signed-off-by: yubiuser <github@yubiuser.dev>
2025-02-22 14:09:53 +01:00
yubiuser 1e922a8b29 Move all files from /scripts/pi-hole/ to /scripts/
Signed-off-by: yubiuser <github@yubiuser.dev>
2024-10-28 20:22:09 +01:00
yubiuser 4c21641663 Unify vendor file location
Signed-off-by: yubiuser <github@yubiuser.dev>
2024-10-28 20:12:11 +01:00
RD WebDesignandGitHub f842c72236 Settings Pages - small adjustments (#3000)
- Fix buttons in high contrast themes
- consistent indentation and widths for fields and labels
- use class `form-control` to format every form field
- add some line breaks to improve readability
- use colors in "Currently active sessions" table
2024-04-03 16:27:35 -03:00
RD WebDesign 6f65368759 Settings Page - Apply small adjustments
- consistent indentation and widths for fields and labels
- use class `form-control` to format every form field
- add some line breaks to improve readability

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2024-04-02 21:28:26 -03:00
DL6ER 64ccce4bd5 Add field-sizing-content class that makes input and textarea fields it is applied to automatically scale to the size of their content.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2024-04-01 19:52:22 +01:00
DL6ER 2f44fc63cc Merge branch 'development-v6' into tweak/settings_changed_only
Signed-off-by: DL6ER <dl6er@dl6er.de>
2024-02-11 10:14:49 +01:00
DominikandGitHub da7c0efb02 Add support for multiple reverse server (#2885) 2024-02-11 06:52:35 +01:00
DL6ER 52991f495c Merge branch 'development-v6' into tweak/settings_changed_only
Signed-off-by: DL6ER <dl6er@dl6er.de>
2024-01-07 14:04:11 +01:00
RD WebDesign 89866fab77 Adding a container and a semi-transparent background
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2023-12-02 03:30:35 -03:00
DL6ER 05ff5647bd Rearrange items on Settings -> DNS page
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-12-01 13:02:10 +01:00
DL6ER e1ca33cd0f Add support for adding multiple reverse servers
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-12-01 13:00:26 +01:00
DL6ER ce96e15d59 Remove settings-level-1 and rename level 0 to basic, level 2 to expert
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-11-29 13:11:27 +01:00
DL6ER ceb1118c0b Add settings level and only-changed settings toggle
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-11-29 13:10:18 +01:00
DL6ER b5481fed35 Add dns.expandHosts and move the two strongly correlated setting into their own box
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-11-13 09:21:37 +01:00
DL6ER 0feb021eb8 dhcp.domain -> dns.domain
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-11-13 09:16:35 +01:00
RD WebDesign db0c333d6b Add a data-configkeys attribute to titles in settings pages
Separate real classes from config keys.
Use class attribute only for styles.
2023-11-01 18:33:58 -03:00
Adam Warner 66401ee222 In addition to adding the readonly icon, we can also add the other icons with teh same method.
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2023-10-29 15:21:18 +00:00
Adam Warner fef945c49f Disable settings inputs if they are already set by environment variable. Add a padlock icon to the setting section title if any of the settings contained therin are set by environment variable 2023-10-29 15:21:18 +00:00
RD WebDesign b26dcf36b8 Settings pages: move level selector from top bar and add page titles
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2023-07-19 00:39:35 -03:00