diff --git a/fdisk/CHANGELOG b/fdisk/CHANGELOG index c04548737..c28145f25 100644 --- a/fdisk/CHANGELOG +++ b/fdisk/CHANGELOG @@ -20,3 +20,4 @@ Link to SMART module for SCSI disks too, and IDE params page for SATA disks pret Changed the IDE standby timeout to use a slider, thanks to Jean-Christophe Dubois. ---- Changes since 1.390 ---- Changed the module's main page so that it only lists disks, with links to a separate page for showing the partitions. +Re-wrote all code to use the new Webmin user interface library, for a more consistent look. diff --git a/fdisk/edit_disk.cgi b/fdisk/edit_disk.cgi index 1e8f0ddb8..eba490668 100644 --- a/fdisk/edit_disk.cgi +++ b/fdisk/edit_disk.cgi @@ -132,7 +132,21 @@ else { print "$text{'disk_none'}

\n"; } print &ui_links_row(\@edlinks); -print "

\n"; + +# Buttons for IDE params and SMART +print "


\n"; +print &ui_buttons_start(); +if (&supports_hdparm($d)) { + print &ui_buttons_row("edit_hdparm.cgi", $text{'index_hdparm'}, + $text{'index_hdparmdesc'}, + &ui_hidden("disk", $d->{'index'})); + } +if (&supports_smart($d)) { + print &ui_buttons_row("../smart-status/index.cgi", $text{'index_smart'}, + $text{'index_smartdesc'}, + &ui_hidden("drive", $d->{'device'})); + } +print &ui_buttons_end(); &ui_print_footer("", $text{'index_return'}); diff --git a/fdisk/fdisk-lib.pl b/fdisk/fdisk-lib.pl index 5aa4ce50c..c8b744368 100644 --- a/fdisk/fdisk-lib.pl +++ b/fdisk/fdisk-lib.pl @@ -731,38 +731,36 @@ return $_[0] eq "ext2" || $_[0] eq "ext3"; sub tunefs_options { if ($_[0] eq "ext2" || $_[0] eq "ext3") { + # Gaps between checks &opt_input("tunefs_c", "", 1); - print "$text{'tunefs_e'} \n"; - print " ", - "$text{'opt_default'}\n"; - print "  \n"; - print " \n"; + # Action on error + print &ui_table_row($text{'tunefs_e'}, + &ui_radio("tunefs_e_def", 1, + [ [ 1, $text{'opt_default'} ], + [ 0, &ui_select("tunefs_e", undef, + [ [ "continue", $text{'tunefs_continue'} ], + [ "remount-ro", $text{'tunefs_remount'} ], + [ "panic", $text{'tunefs_panic'} ] ]) ] ])); - print " $text{'tunefs_u'} \n"; - print " ", - "$text{'opt_default'}\n"; - print "  \n"; - print " ", - &user_chooser_button("tunefs_u", 0),"\n"; + # Reserved user + print &ui_table_row($text{'tunefs_u'}, + &ui_opt_textbox("tunefs_u", undef, 13, $text{'opt_default'})." ". + &user_chooser_button("tunefs_u", 0)); - print "$text{'tunefs_g'} \n"; - print " ", - "$text{'opt_default'}\n"; - print "  \n"; - print " ", - &group_chooser_button("tunefs_g", 0)," \n"; + # Reserved group + print &ui_table_row($text{'tunefs_g'}, + &ui_opt_textbox("tunefs_g", undef, 13, $text{'opt_default'})." ". + &group_chooser_button("tunefs_g", 0)); + # Reserved blocks &opt_input("tunefs_m", "%", 1); - $tsel = "\n"; + + # Time between checks + $tsel = &ui_select("tunefs_i_unit", undef, + [ [ "d", $text{'tunefs_days'} ], + [ "w", $text{'tunefs_weeks'} ], + [ "m", $text{'tunefs_months'} ] ]); &opt_input("tunefs_i", $tsel, 0); } } @@ -1203,3 +1201,18 @@ if ($has_xfs_db && ($_[2] eq "xfs" || !$_[2])) { } return 0; } + +# supports_hdparm(&disk) +sub supports_hdparm +{ +local ($d) = @_; +return $d->{'type'} eq 'ide' || $d->{'type'} eq 'scsi' && $d->{'model'} =~ /ATA/; +} + +# supports_smart(&disk) +sub supports_smart +{ +return &foreign_installed("smart-status") && + &foreign_available("smart-status"); +} + diff --git a/fdisk/fsck.cgi b/fdisk/fsck.cgi index 6b2bd7e56..1d54ee5af 100755 --- a/fdisk/fsck.cgi +++ b/fdisk/fsck.cgi @@ -7,10 +7,11 @@ require './fdisk-lib.pl'; &can_edit_disk($in{'dev'}) || &error($text{'fsck_ecannot'}); &ui_print_unbuffered_header(undef, $text{'fsck_title'}, ""); +$cmd = &fsck_command($in{'type'}, $in{'dev'}); print "",&text('fsck_exec', "$cmd"),"\n"; print "
\n";
 &foreign_call("proc", "safe_process_exec_logged",
-	      $in{'cmd'}, 0, 0, STDOUT, undef, 1);
+	      $cmd, 0, 0, STDOUT, undef, 1);
 print "
\n"; print "... ",&fsck_error($?/256),"

\n"; &webmin_log("fsck", undef, $in{'dev'}, \%in); diff --git a/fdisk/fsck_form.cgi b/fdisk/fsck_form.cgi index 185efef24..cac3cddf6 100755 --- a/fdisk/fsck_form.cgi +++ b/fdisk/fsck_form.cgi @@ -13,12 +13,10 @@ print &text('fsck_desc1', &fstype_name($stat[1]), "$in{dev}", $cmd = &fsck_command($stat[1], $in{dev}); print &text('fsck_desc2', "$cmd", "fsck"),"

\n"; -print "

\n"; -print "\n"; -print "\n"; -print "\n"; -print "
\n"; -print "
\n"; +print &ui_form_start("fsck.cgi"); +print &ui_hidden("dev", $in{'dev'}); +print &ui_hidden("type", $stat[1]); +print &ui_form_end([ [ undef, $text{'fsck_repair'} ] ]); &ui_print_footer("", $text{'index_return'}); diff --git a/fdisk/index.cgi b/fdisk/index.cgi index 98f06905d..c57017e03 100755 --- a/fdisk/index.cgi +++ b/fdisk/index.cgi @@ -5,15 +5,21 @@ require './fdisk-lib.pl'; &error_setup($text{'index_err'}); &check_fdisk(); + +# Work out which disks are accessible +@disks = &list_disks_partitions(); +@disks = grep { $access{'view'} || &can_edit_disk($_->{'device'}) } @disks; +if (@disks == 1 && &can_edit_disk($disks[0]->{'device'})) { + # Just one .. go direct to it's page + &redirect("edit_disk.cgi?device=$disks[0]->{'device'}"); + edit; + } + &ui_print_header(undef, $module_info{'desc'}, "", undef, 0, 1, 0, &help_search_link("fdisk", "man", "doc", "howto")); $extwidth = 250; # Show a table of just disks -$smart = &foreign_installed("smart-status") && - &foreign_available("smart-status"); -@disks = &list_disks_partitions(); -@disks = grep { $access{'view'} || &can_edit_disk($_->{'device'}) } @disks; @disks = sort { $a->{'device'} cmp $b->{'device'} } @disks; if (@disks) { ($hasctrl) = grep { defined($d->{'scsiid'}) || @@ -27,6 +33,7 @@ if (@disks) { $text{'index_dacts'} ]); foreach $d (@disks) { $ed = &can_edit_disk($d->{'device'}); + $smart = &supports_smart($d); @links = ( ); @ctrl = ( ); if (defined($d->{'scsiid'}) && defined($d->{'controller'})) { @@ -36,13 +43,12 @@ if (@disks) { if ($d->{'raid'}) { push(@ctrl, &text('index_draid', $d->{'raid'})); } - if (($d->{'type'} eq 'ide' || - $d->{'type'} eq 'scsi' && $d->{'model'} =~ /ATA/) && $ed) { + if ($ed && &supports_hdparm($d)) { # Display link to IDE params form push(@links, "$text{'index_dhdparm'}"); } - if ($smart) { + if (&supports_smart($d)) { # Display link to smart module push(@links, "$text{'index_dsmart'}"); diff --git a/fdisk/lang/en b/fdisk/lang/en index 47a30bc5e..7f4b771f1 100644 --- a/fdisk/lang/en +++ b/fdisk/lang/en @@ -18,8 +18,10 @@ index_end=End index_addpri=Add primary partition. index_addlog=Add logical partition. index_addext=Add extended partition. -index_hdparm=Edit IDE parameters. -index_smart=Show SMART status. +index_hdparm=Edit IDE parameters +index_hdparmdesc=Change settings for an IDE drive, such as the DMA mode, standby timeout and number of sectors read. +index_smart=Show SMART status +index_smartdesc=Displays the status reported by this drive, including temperature and error rates. index_use=Use index_free=Free index_return=disk list diff --git a/fdisk/tunefs_form.cgi b/fdisk/tunefs_form.cgi index c45611ca0..bcb378759 100755 --- a/fdisk/tunefs_form.cgi +++ b/fdisk/tunefs_form.cgi @@ -7,21 +7,17 @@ require './fdisk-lib.pl'; &ui_print_header(undef, $text{'tunefs_title'}, ""); &ReadParse(); -print "
\n"; -print "\n"; -print "\n"; - @stat = &device_status($in{dev}); print &text('tunefs_desc', &fstype_name($in{type}), "$in{dev}", "$stat[1]"),"

\n"; -print "\n"; -print "\n"; -print "
$text{'tunefs_params'}
\n"; +print &ui_form_start("tunefs.cgi"); +print &ui_hidden("dev", $in{'dev'}); +print &ui_hidden("type", $in{'type'}); +print &ui_table_start($text{'tunefs_params'}, "width=100%", 4); &tunefs_options($in{type}); -print "

\n"; - -print "

\n"; +print &ui_table_end(); +print &ui_form_end([ [ undef, $text{'tunefs_tune'} ] ]); &ui_print_footer("", $text{'index_return'});