Handle hostnames with upper-case letters
[webmin.git] / change-user / index.cgi
1 #!/usr/local/bin/perl
2 # index.cgi
3 # Display the user's current language, theme and password
4
5 use strict;
6 use warnings;
7 require './change-user-lib.pl';
8 our (%text, %access, $base_remote_user, $default_lang, %gconfig);
9 &ui_print_header(undef, $text{'index_title'}, "", undef, 0, 1);
10
11 my @users = &acl::list_users();
12 my ($user) = grep { $_->{'name'} eq $base_remote_user } @users;
13
14 my @can;
15 push(@can, 'lang') if ($access{'lang'});
16 push(@can, 'theme') if ($access{'theme'});
17 push(@can, 'pass') if ($access{'pass'} && &can_change_pass($user));
18 my $can = &text('index_d'.scalar(@can), map { $text{'index_d'.$_} } @can);
19 print &text('index_desc2', $can),"<p>\n";
20
21 print &ui_form_start("change.cgi", "post");
22 print &ui_table_start(undef, undef, 2);
23
24 if ($access{'lang'}) {
25         # Show personal language
26         my @langs = &list_languages();
27         my $glang = $gconfig{"lang"} || $default_lang;
28         my ($linfo) = grep { $_->{'lang'} eq $glang } @langs;
29         print &ui_table_row($text{'index_lang'},
30                 &ui_radio("lang_def", $user->{'lang'} ? 0 : 1,
31                           [ [ 1, &text('index_langglobal',
32                                        $linfo->{'desc'})."<br>" ],
33                             [ 0, $text{'index_langset'} ] ])." ".
34                 &ui_select("lang", $user->{'lang'},
35                            [ map { [ $_->{'lang'},
36                                      $_->{'desc'}." (".uc($_->{'lang'}).")" ] }
37                                  &list_languages() ]));
38         }
39
40 if ($access{'theme'}) {
41         # Show personal theme
42         my $tname;
43         if ($gconfig{'theme'}) {
44                 my ($gtheme, $goverlay) = split(/\s+/, $gconfig{'theme'});
45                 my %tinfo = &webmin::get_theme_info($gtheme);
46                 $tname = $tinfo{'desc'};
47                 }
48         else {
49                 $tname = $text{'index_themedef'};
50                 }
51         my @all = &webmin::list_themes();
52         my @themes = grep { !$_->{'overlay'} } @all;
53         my @overlays = grep { $_->{'overlay'} } @all;
54
55         # Main theme
56         print &ui_table_row($text{'index_theme'},
57                 &ui_radio("theme_def", defined($user->{'theme'}) ? 0 : 1,
58                           [ [ 1, &text('index_themeglobal', $tname)."<br>" ],
59                             [ 0, $text{'index_themeset'} ] ])." ".
60                 &ui_select("theme", $user->{'theme'},
61                         [ [ '', $text{'index_themedef'} ],
62                           map { [ $_->{'dir'}, $_->{'desc'} ] }
63                               @themes ]));
64
65         # Overlay, if any
66         if (@overlays) {
67                 print &ui_table_row($text{'index_overlay'},
68                         &ui_select("overlay", $user->{'overlay'},
69                                 [ [ '', $text{'index_overlaydef'} ],
70                                   map { [ $_->{'dir'}, $_->{'desc'} ] }
71                                       @overlays ]));
72                 }
73         }
74
75 if ($access{'pass'} && &can_change_pass($user)) {
76         # Show password
77         print &ui_table_row($text{'index_pass'},
78                 &ui_radio("pass_def", 1,
79                           [ [ 1, $text{'index_passleave'}."<br>" ],
80                             [ 0, $text{'index_passset'} ] ])." ".
81                 &ui_password("pass", undef, 20)." ".
82                 $text{'index_passagain'}." ".
83                 &ui_password("pass2", undef, 20));
84         }
85
86 print &ui_table_end();
87 print &ui_form_end([ [ undef, $text{'index_ok'} ] ]);
88
89 &ui_print_footer("/", $text{'index'});
90