Handle hostnames with upper-case letters
[webmin.git] / ldap-server / edit_schema.cgi
1 #!/usr/local/bin/perl
2 # Select which schema files are included
3
4 require './ldap-server-lib.pl';
5 &local_ldap_server() == 1 || &error($text{'slapd_elocal'});
6 $access{'schema'} || &error($text{'schema_ecannot'});
7 &ui_print_header(undef, $text{'schema_title'}, "", "schema");
8
9 # Get included schemas
10 if (&get_config_type() == 1) {
11         $conf = &get_config();
12         foreach $i (&find_value("include", $conf)) {
13                 if ($i =~ /^(.*)\// && $1 eq $config{'schema_dir'}) {
14                         $incs{$i} = ++$n;
15                         }
16                 }
17         $editable = 1;
18         }
19
20 # Show a table of all known schema files, with checkboxes
21 print $text{'schema_pagedesc'},"<p>\n";
22 @tds = ( $editable ? ( "width=5" ) : ( ),
23          "width=20%", "width=65%", "width=10%", "width=5% nowrap" );
24 print &ui_form_start("save_schema.cgi", "post");
25 print &ui_columns_start([ $editable ? ( "" ) : ( ),
26                           $text{'schema_file'},
27                           $text{'schema_desc'},
28                           $text{'schema_act'},
29                           $editable ? ( $text{'schema_move'} ) : ( ) ],
30                         100, 0, \@tds);
31 @files = sort { &schema_sorter } &list_schema_files();
32 for($i=0; $i<@files; $i++) {
33         $s = $files[$i];
34         @acts = ( "<a href='view_sfile.cgi?file=".&urlize($s->{'file'})."'>".
35                   "$text{'schema_view'}</a>",
36                   "<a href='edit_sfile.cgi?file=".&urlize($s->{'file'})."'>".
37                   "$text{'schema_edit'}</a>" );
38         if ($incs{$s->{'file'}}) {
39                 $mover = &ui_up_down_arrows(
40                         "up_schema.cgi?file=".&urlize($s->{'file'}),
41                         "down_schema.cgi?file=".&urlize($s->{'file'}),
42                         $i > 1,
43                         $i && $i < @files-1 && $incs{$files[$i+1]->{'file'}});
44                 }
45         else {
46                 $mover = "";
47                 }
48         if ($editable) {
49                 # With move / enable checkbox
50                 print &ui_checked_columns_row(
51                         [ $s->{'name'},
52                           $s->{'desc'} || $s->{'file'},
53                           &ui_links_row(\@acts),
54                           $mover,
55                         ],
56                         \@tds, "d", $s->{'file'}, $incs{$s->{'file'}},
57                         $s->{'name'} eq 'core');
58                 }
59         else {
60                 # View files only
61                 print &ui_columns_row(
62                         [ $s->{'name'},
63                           $s->{'desc'} || $s->{'file'},
64                           &ui_links_row(\@acts) ], \@tds);
65                 }
66         }
67 print &ui_columns_end();
68 print &ui_form_end($editable ? [ [ undef, $text{'save'} ] ] : [ ]);
69
70 &ui_print_footer("", $text{'index_return'});
71
72 sub schema_sorter
73 {
74 return ($incs{$a->{'file'}} || 999) <=> ($incs{$b->{'file'}} || 999);
75 }
76