Convert all anchor buttons to button elements for consistent sizing

WHM styles override <a> tag padding, making anchor-based buttons
larger than native buttons. Using <button> elements everywhere
ensures uniform button sizing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shuki
2026-03-04 05:50:11 +02:00
parent 0ada0cc034
commit f9326390d7
6 changed files with 16 additions and 16 deletions

View File

@@ -28,13 +28,13 @@ print GnizaWHM::UI::render_flash();
# Quick links # Quick links
print qq{<div class="flex gap-3 mb-5">\n}; print qq{<div class="flex gap-3 mb-5">\n};
print qq{ <a href="setup.cgi" class="btn btn-primary btn-sm">Run Setup Wizard</a>\n}; print qq{ <button type="button" class="btn btn-primary btn-sm" onclick="location.href='setup.cgi'">Run Setup Wizard</button>\n};
print qq{</div>\n}; print qq{</div>\n};
# Remote destinations # Remote destinations
my @remotes = GnizaWHM::UI::list_remotes(); my @remotes = GnizaWHM::UI::list_remotes();
print qq{<div class="card bg-white shadow-sm border border-base-300 mb-6">\n<div class="card-body">\n}; print qq{<div class="card bg-white shadow-sm border border-base-300 mb-6">\n<div class="card-body">\n};
print qq{<div class="flex items-center gap-3"><h2 class="card-title text-sm">Configured Remotes</h2><a href="remotes.cgi?action=add_form" class="btn btn-primary btn-xs">Add New</a></div>\n}; print qq{<div class="flex items-center gap-3"><h2 class="card-title text-sm">Configured Remotes</h2><button type="button" class="btn btn-primary btn-sm" onclick="location.href='remotes.cgi?action=add_form'">Add New</button></div>\n};
if (@remotes) { if (@remotes) {
print qq{<div class="overflow-x-auto rounded-box border border-base-content/5 bg-base-100"><table class="table">\n}; print qq{<div class="overflow-x-auto rounded-box border border-base-content/5 bg-base-100"><table class="table">\n};
print qq{<thead><tr><th>Name</th><th>Host</th><th>Port</th><th>Retention</th></tr></thead>\n}; print qq{<thead><tr><th>Name</th><th>Host</th><th>Port</th><th>Retention</th></tr></thead>\n};
@@ -56,7 +56,7 @@ print qq{</div>\n</div>\n};
# Active schedules # Active schedules
my $schedules = GnizaWHM::Cron::get_current_schedules(); my $schedules = GnizaWHM::Cron::get_current_schedules();
print qq{<div class="card bg-white shadow-sm border border-base-300 mb-6">\n<div class="card-body">\n}; print qq{<div class="card bg-white shadow-sm border border-base-300 mb-6">\n<div class="card-body">\n};
print qq{<div class="flex items-center gap-3"><h2 class="card-title text-sm">Active Cron Schedules</h2><a href="schedules.cgi?action=add_form" class="btn btn-primary btn-xs">Add New</a></div>\n}; print qq{<div class="flex items-center gap-3"><h2 class="card-title text-sm">Active Cron Schedules</h2><button type="button" class="btn btn-primary btn-sm" onclick="location.href='schedules.cgi?action=add_form'">Add New</button></div>\n};
if (keys %$schedules) { if (keys %$schedules) {
print qq{<div class="overflow-x-auto rounded-box border border-base-content/5 bg-base-100"><table class="table">\n}; print qq{<div class="overflow-x-auto rounded-box border border-base-content/5 bg-base-100"><table class="table">\n};
print qq{<thead><tr><th>Schedule</th><th>Timing</th><th>Remote Destination(s)</th></tr></thead>\n}; print qq{<thead><tr><th>Schedule</th><th>Timing</th><th>Remote Destination(s)</th></tr></thead>\n};

View File

@@ -92,7 +92,7 @@ sub show_list {
print qq{ <td><span class="badge $badge badge-sm">$f->{type}</span></td>\n}; print qq{ <td><span class="badge $badge badge-sm">$f->{type}</span></td>\n};
print qq{ <td>$date</td>\n}; print qq{ <td>$date</td>\n};
print qq{ <td>$size</td>\n}; print qq{ <td>$size</td>\n};
print qq{ <td><a href="$href" class="btn btn-ghost btn-xs">View</a></td>\n}; print qq{ <td><button type="button" class="btn btn-ghost btn-sm" onclick="location.href='$href'">View</button></td>\n};
print qq{</tr>\n}; print qq{</tr>\n};
} }
@@ -203,7 +203,7 @@ sub show_file {
my $href = $base_href; my $href = $base_href;
$href .= "&level=$lv" if $lv ne ''; $href .= "&level=$lv" if $lv ne '';
my $label = $level_labels{$lv}; my $label = $level_labels{$lv};
print qq{ <a href="$href" class="btn btn-sm$active">$label</a>\n}; print qq{ <button type="button" class="btn btn-sm$active" onclick="location.href='$href'">$label</button>\n};
} }
print qq{</div>\n}; print qq{</div>\n};

View File

@@ -192,7 +192,7 @@ sub handle_list {
print qq{</div>\n</div>\n}; print qq{</div>\n</div>\n};
print qq{<div class="flex gap-2 mt-4">\n}; print qq{<div class="flex gap-2 mt-4">\n};
print qq{ <a href="remotes.cgi?action=add" class="btn btn-primary btn-sm">Add Remote</a>\n}; print qq{ <button type="button" class="btn btn-primary btn-sm" onclick="location.href='remotes.cgi?action=add'">Add Remote</button>\n};
print qq{</div>\n}; print qq{</div>\n};
print GnizaWHM::UI::page_footer(); print GnizaWHM::UI::page_footer();
@@ -637,7 +637,7 @@ sub render_remote_form {
my $btn_label = $is_edit ? 'Save Changes' : 'Create Remote'; my $btn_label = $is_edit ? 'Save Changes' : 'Create Remote';
print qq{ <button type="submit" class="btn btn-primary btn-sm">$btn_label</button>\n}; print qq{ <button type="submit" class="btn btn-primary btn-sm">$btn_label</button>\n};
print qq{ <button type="button" class="btn btn-secondary btn-sm" id="test-conn-btn" onclick="gnizaTestConnection()">Test Connection</button>\n}; print qq{ <button type="button" class="btn btn-secondary btn-sm" id="test-conn-btn" onclick="gnizaTestConnection()">Test Connection</button>\n};
print qq{ <a href="remotes.cgi" class="btn btn-ghost btn-sm">Cancel</a>\n}; print qq{ <button type="button" class="btn btn-ghost btn-sm" onclick="location.href='remotes.cgi'">Cancel</button>\n};
print qq{</div>\n}; print qq{</div>\n};
print qq{<div id="gniza-alert-area" class="mt-4"></div>\n}; print qq{<div id="gniza-alert-area" class="mt-4"></div>\n};

View File

@@ -200,7 +200,7 @@ sub handle_step2 {
unless ($ok) { unless ($ok) {
my $msg = GnizaWHM::UI::esc($stderr || 'Failed to list snapshots'); my $msg = GnizaWHM::UI::esc($stderr || 'Failed to list snapshots');
print qq{<div class="alert alert-error mb-4">$msg</div>\n}; print qq{<div class="alert alert-error mb-4">$msg</div>\n};
print qq{<a href="restore.cgi" class="btn btn-ghost btn-sm">Back</a>\n}; print qq{<button type="button" class="btn btn-ghost btn-sm" onclick="location.href='restore.cgi'">Back</button>\n};
print GnizaWHM::UI::page_footer(); print GnizaWHM::UI::page_footer();
Whostmgr::HTMLInterface::footer(); Whostmgr::HTMLInterface::footer();
return; return;
@@ -386,10 +386,10 @@ sub handle_step2 {
if (@snapshots) { if (@snapshots) {
print qq{<div class="flex gap-2">\n}; print qq{<div class="flex gap-2">\n};
print qq{ <button type="submit" class="btn btn-primary btn-sm">Review &amp; Confirm</button>\n}; print qq{ <button type="submit" class="btn btn-primary btn-sm">Review &amp; Confirm</button>\n};
print qq{ <a href="restore.cgi" class="btn btn-ghost btn-sm">Back</a>\n}; print qq{ <button type="button" class="btn btn-ghost btn-sm" onclick="location.href='restore.cgi'">Back</button>\n};
print qq{</div>\n}; print qq{</div>\n};
} else { } else {
print qq{<a href="restore.cgi" class="btn btn-ghost btn-sm">Back</a>\n}; print qq{<button type="button" class="btn btn-ghost btn-sm" onclick="location.href='restore.cgi'">Back</button>\n};
} }
print qq{</form>\n}; print qq{</form>\n};
@@ -848,7 +848,7 @@ sub handle_step3 {
print qq{<div class="flex gap-2">\n}; print qq{<div class="flex gap-2">\n};
print qq{ <button type="submit" class="btn btn-error btn-sm" onclick="return confirm('Are you sure you want to restore? This may overwrite existing data.')">Execute Restore</button>\n}; print qq{ <button type="submit" class="btn btn-error btn-sm" onclick="return confirm('Are you sure you want to restore? This may overwrite existing data.')">Execute Restore</button>\n};
print qq{ <a href="restore.cgi" class="btn btn-ghost btn-sm">Cancel</a>\n}; print qq{ <button type="button" class="btn btn-ghost btn-sm" onclick="location.href='restore.cgi'">Cancel</button>\n};
print qq{</div>\n}; print qq{</div>\n};
print qq{</form>\n}; print qq{</form>\n};
@@ -1010,7 +1010,7 @@ sub handle_step4 {
print qq{</div>\n</div>\n}; print qq{</div>\n</div>\n};
} }
print qq{<a href="restore.cgi" class="btn btn-ghost btn-sm">Start New Restore</a>\n}; print qq{<button type="button" class="btn btn-ghost btn-sm" onclick="location.href='restore.cgi'">Start New Restore</button>\n};
print GnizaWHM::UI::page_footer(); print GnizaWHM::UI::page_footer();
Whostmgr::HTMLInterface::footer(); Whostmgr::HTMLInterface::footer();

View File

@@ -119,7 +119,7 @@ function gnizaToggleCron(el) {
# Action buttons # Action buttons
print qq{<div class="flex gap-2 mb-6">\n}; print qq{<div class="flex gap-2 mb-6">\n};
print qq{ <a href="schedules.cgi?action=add" class="btn btn-primary btn-sm">Add Schedule</a>\n}; print qq{ <button type="button" class="btn btn-primary btn-sm" onclick="location.href='schedules.cgi?action=add'">Add Schedule</button>\n};
print qq{</div>\n}; print qq{</div>\n};
print GnizaWHM::UI::page_footer(); print GnizaWHM::UI::page_footer();
@@ -557,7 +557,7 @@ sub render_schedule_form {
print qq{<div class="flex gap-2 mt-4">\n}; print qq{<div class="flex gap-2 mt-4">\n};
my $btn_label = $is_edit ? 'Save Changes' : 'Create Schedule'; my $btn_label = $is_edit ? 'Save Changes' : 'Create Schedule';
print qq{ <button type="submit" class="btn btn-primary btn-sm" onclick="return gnizaCollectRemotes()">$btn_label</button>\n}; print qq{ <button type="submit" class="btn btn-primary btn-sm" onclick="return gnizaCollectRemotes()">$btn_label</button>\n};
print qq{ <a href="schedules.cgi" class="btn btn-ghost btn-sm">Cancel</a>\n}; print qq{ <button type="button" class="btn btn-ghost btn-sm" onclick="location.href='schedules.cgi'">Cancel</button>\n};
print qq{</div>\n}; print qq{</div>\n};
print qq{</form>\n}; print qq{</form>\n};

View File

@@ -63,7 +63,7 @@ sub handle_step1 {
print qq{<input type="hidden" name="wizard" value="1">\n}; print qq{<input type="hidden" name="wizard" value="1">\n};
print qq{<div class="flex gap-2 mt-4">\n}; print qq{<div class="flex gap-2 mt-4">\n};
print qq{ <button type="submit" class="btn btn-primary btn-sm" onclick="return gnizaPrepStep2()">Next: Configure Remote</button>\n}; print qq{ <button type="submit" class="btn btn-primary btn-sm" onclick="return gnizaPrepStep2()">Next: Configure Remote</button>\n};
print qq{ <a href="index.cgi" class="btn btn-ghost btn-sm">Cancel</a>\n}; print qq{ <button type="button" class="btn btn-ghost btn-sm" onclick="location.href='index.cgi'">Cancel</button>\n};
print qq{</div>\n}; print qq{</div>\n};
print qq{</form>\n}; print qq{</form>\n};
} else { } else {
@@ -89,7 +89,7 @@ sub handle_step1 {
print qq{</div>\n}; print qq{</div>\n};
print qq{<div class="flex gap-2 mt-4">\n}; print qq{<div class="flex gap-2 mt-4">\n};
print qq{ <button type="submit" class="btn btn-primary btn-sm">Next: Configure Remote</button>\n}; print qq{ <button type="submit" class="btn btn-primary btn-sm">Next: Configure Remote</button>\n};
print qq{ <a href="index.cgi" class="btn btn-ghost btn-sm">Cancel</a>\n}; print qq{ <button type="button" class="btn btn-ghost btn-sm" onclick="location.href='index.cgi'">Cancel</button>\n};
print qq{</div>\n}; print qq{</div>\n};
print qq{</form>\n}; print qq{</form>\n};
} }