From 6e25287e278e90c8716ccd000b966e36a1a24e0c Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Sat, 6 Mar 2021 13:52:44 +0300 Subject: [PATCH 1/6] All symlink themes must not be listed to prevent confusing dupes --- usermin/usermin-lib.pl | 1 - webmin/webmin-lib.pl | 1 - 2 files changed, 2 deletions(-) diff --git a/usermin/usermin-lib.pl b/usermin/usermin-lib.pl index acde87b63..32c665abe 100755 --- a/usermin/usermin-lib.pl +++ b/usermin/usermin-lib.pl @@ -181,7 +181,6 @@ my %done; foreach my $theme (&list_themes()) { my $iscurr = $curr && $theme->{'dir'} eq $curr; next if (-l $root_directory."/".$theme->{'dir'} && - $theme->{'dir'} =~ /\d+$/ && !$iscurr); next if ($done{$theme->{'desc'}}++ && !$iscurr); push(@rv, $theme); diff --git a/webmin/webmin-lib.pl b/webmin/webmin-lib.pl index 1cc742586..d11755551 100755 --- a/webmin/webmin-lib.pl +++ b/webmin/webmin-lib.pl @@ -2752,7 +2752,6 @@ my %done; foreach my $theme (&list_themes()) { my $iscurr = $curr && $theme->{'dir'} eq $curr; next if (-l $root_directory."/".$theme->{'dir'} && - $theme->{'dir'} =~ /\d+$/ && !$iscurr); next if ($done{$theme->{'desc'}}++ && !$iscurr); push(@rv, $theme); From 3fd024ac7fcc4595f4cd641374bf36dde383d51a Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Sat, 6 Mar 2021 14:10:00 +0300 Subject: [PATCH 2/6] All symlinked themes must not be listed to prevent confusing dupes 2/2 --- cluster-usermin/cluster-usermin-lib.pl | 2 +- cluster-webmin/cluster-webmin-lib.pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cluster-usermin/cluster-usermin-lib.pl b/cluster-usermin/cluster-usermin-lib.pl index 0b49af504..2edd44258 100755 --- a/cluster-usermin/cluster-usermin-lib.pl +++ b/cluster-usermin/cluster-usermin-lib.pl @@ -113,7 +113,7 @@ sub all_themes { local %done; return sort { $a->{'desc'} cmp $b->{'desc'} } - grep { !$done{$_->{'dir'}}++ } + grep { ! -l "$root_directory/$_->{'dir'}" && !$done{$_->{'dir'}}++ } map { @{$_->{'themes'}} } @{$_[0]}; } diff --git a/cluster-webmin/cluster-webmin-lib.pl b/cluster-webmin/cluster-webmin-lib.pl index 07c4323e7..a3ff42084 100755 --- a/cluster-webmin/cluster-webmin-lib.pl +++ b/cluster-webmin/cluster-webmin-lib.pl @@ -147,7 +147,7 @@ sub all_themes { local %done; return sort { $a->{'desc'} cmp $b->{'desc'} } - grep { !$done{$_->{'dir'}}++ } + grep { ! -l "$root_directory/$_->{'dir'}" && !$done{$_->{'dir'}}++ } map { @{$_->{'themes'}} } @{$_[0]}; } From 2ae9cb3296725b7a4b45f846b16006a3e88d714b Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Sat, 6 Mar 2021 15:02:16 +0300 Subject: [PATCH 3/6] Use list visible themes sub --- acl/edit_user.cgi | 2 +- usermin/edit_themes.cgi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/acl/edit_user.cgi b/acl/edit_user.cgi index 4ea6379d1..fcaa02992 100755 --- a/acl/edit_user.cgi +++ b/acl/edit_user.cgi @@ -211,7 +211,7 @@ if ($access{'cats'}) { [ 0, $text{'default'} ] ])); } -my @all = &webmin::list_themes(); +my @all = &webmin::list_visible_themes(); my @themes = grep { !$_->{'overlay'} } @all; my @overlays = grep { $_->{'overlay'} } @all; diff --git a/usermin/edit_themes.cgi b/usermin/edit_themes.cgi index c78039799..62c9051e5 100755 --- a/usermin/edit_themes.cgi +++ b/usermin/edit_themes.cgi @@ -7,7 +7,7 @@ $access{'themes'} || &error($text{'acl_ecannot'}); &ReadParse(); &ui_print_header(undef, $text{'themes_title'}, ""); -@themes = &list_themes(); +@themes = &list_visible_themes(); &get_usermin_config(\%uconfig); $prog = "edit_themes.cgi?mode="; From 9a9342edf076308ede4b4dd8f24e2b0883209d1c Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Sat, 6 Mar 2021 15:07:07 +0300 Subject: [PATCH 4/6] Do not list Legacy Theme in dropdown in Change Language and Theme module --- change-user/index.cgi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/change-user/index.cgi b/change-user/index.cgi index 3051ecce8..a85c28b14 100755 --- a/change-user/index.cgi +++ b/change-user/index.cgi @@ -75,8 +75,7 @@ if ($access{'theme'}) { [ [ 1, &text('index_themeglobal', $tname)."
" ], [ 0, $text{'index_themeset'} ] ])." ". &ui_select("theme", $user->{'theme'}, - [ [ '', $text{'index_themedef'} ], - map { [ $_->{'dir'}, $_->{'desc'} ] } + [ map { [ $_->{'dir'}, $_->{'desc'} ] } @themes ]), undef, [ "valign=top","valign=top" ]); # Overlay, if any From cefd479223fb0b38b1e88e54a82103c92149c0e8 Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Sat, 6 Mar 2021 22:46:12 +0300 Subject: [PATCH 5/6] Revert: This fix must be in dev/no-list-blue-theme --- change-user/index.cgi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/change-user/index.cgi b/change-user/index.cgi index a85c28b14..3051ecce8 100755 --- a/change-user/index.cgi +++ b/change-user/index.cgi @@ -75,7 +75,8 @@ if ($access{'theme'}) { [ [ 1, &text('index_themeglobal', $tname)."
" ], [ 0, $text{'index_themeset'} ] ])." ". &ui_select("theme", $user->{'theme'}, - [ map { [ $_->{'dir'}, $_->{'desc'} ] } + [ [ '', $text{'index_themedef'} ], + map { [ $_->{'dir'}, $_->{'desc'} ] } @themes ]), undef, [ "valign=top","valign=top" ]); # Overlay, if any From 38deb9c1328e9a3be6f775811aa52a62267b5868 Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Sat, 6 Mar 2021 23:01:34 +0300 Subject: [PATCH 6/6] Unroll to perform checking when UI select is printed https://github.com/webmin/webmin/pull/1453/files/3fd024ac7fcc4595f4cd641374bf36dde383d51a#r588913864 --- cluster-usermin/cluster-usermin-lib.pl | 2 +- cluster-webmin/cluster-webmin-lib.pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cluster-usermin/cluster-usermin-lib.pl b/cluster-usermin/cluster-usermin-lib.pl index 2edd44258..0b49af504 100755 --- a/cluster-usermin/cluster-usermin-lib.pl +++ b/cluster-usermin/cluster-usermin-lib.pl @@ -113,7 +113,7 @@ sub all_themes { local %done; return sort { $a->{'desc'} cmp $b->{'desc'} } - grep { ! -l "$root_directory/$_->{'dir'}" && !$done{$_->{'dir'}}++ } + grep { !$done{$_->{'dir'}}++ } map { @{$_->{'themes'}} } @{$_[0]}; } diff --git a/cluster-webmin/cluster-webmin-lib.pl b/cluster-webmin/cluster-webmin-lib.pl index a3ff42084..07c4323e7 100755 --- a/cluster-webmin/cluster-webmin-lib.pl +++ b/cluster-webmin/cluster-webmin-lib.pl @@ -147,7 +147,7 @@ sub all_themes { local %done; return sort { $a->{'desc'} cmp $b->{'desc'} } - grep { ! -l "$root_directory/$_->{'dir'}" && !$done{$_->{'dir'}}++ } + grep { !$done{$_->{'dir'}}++ } map { @{$_->{'themes'}} } @{$_[0]}; }