aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/console/command
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2017-12-28 15:10:03 +0100
committerMarc Alexander <admin@m-a-styles.de>2017-12-28 15:10:03 +0100
commit39b142077478876b4c2ef270c081681070f264d7 (patch)
tree52e17faafd4f85e30d68677ba71dcfe13b45731b /phpBB/phpbb/console/command
parentbd52c64e68f4fa5ae1a6292c61b272b6a04d2e7f (diff)
downloadforums-39b142077478876b4c2ef270c081681070f264d7.tar
forums-39b142077478876b4c2ef270c081681070f264d7.tar.gz
forums-39b142077478876b4c2ef270c081681070f264d7.tar.bz2
forums-39b142077478876b4c2ef270c081681070f264d7.tar.xz
forums-39b142077478876b4c2ef270c081681070f264d7.zip
[prep-release-3.2.2] Update changelog for 3.2.2-RC1
Diffstat (limited to 'phpBB/phpbb/console/command')
0 files changed, 0 insertions, 0 deletions
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
package modules::interactive;
use interactive;
use modules;
use common;

sub config_window {
    my ($in, $data) = @_;
    require modules;
    my $modules_conf = modules::any_conf->read;
    my %conf = $modules_conf->get_parameters($data->{driver});
    require modules::parameters;
    my @l;
    foreach (modules::parameters::parameters($data->{driver})) {
	   my ($name, $format, $description) = @$_;
	   push @l, { label => $name, help => join("\n", $description, if_(c::kernel_version() !~ /^\Q2.6/, "[$format]")),
                                                val => \$conf{$name}, allow_empty_list => 1 };
    }
    # BUG: once we've released mdk9.2 and unfreeze cooker, morph this
    #      into a proper error dialog with a nice error message (but
    #      for now we cannot due to string freeze :-()
    @l = { label => N("Parameters"), help => "", val => N("NONE"), allow_empty_list => 1 } if !@l;
    if ($in->ask_from(N("Module configuration"), N("You can configure each parameter of the module here."), \@l)) {
	   my $options = join(' ', map { if_($conf{$_}, "$_=$conf{$_}") } keys %conf);
	   if ($options) {
	       $modules_conf->set_options($data->{driver}, $options);
	       $modules_conf->write;
	   }
    }
}

sub load_category {
    my ($in, $modules_conf, $category, $b_auto, $b_at_least_one) = @_;

    my @l;
    {
	my $w;
	my $wait_message = sub { undef $w; $w = wait_load_module($in, $category, @_) };
	@l = modules::load_category($modules_conf, $category, $wait_message);
	undef $w; #- help perl_checker
    }
    if (my @err = grep { $_ } map { $_->{error} } @l) {
	my $return = $in->ask_warn('', join("\n", @err));
	$in->exit(1) if !defined($return);
    }
    return @l if $b_auto && (@l || !$b_at_least_one);

    @l = map { $_->{description} } @l;

    if ($b_at_least_one && !@l) {
	@l = load_category__prompt($in, $modules_conf, $category) or return;
    }

    load_category__prompt_for_more($in, $modules_conf, $category, @l);
}

sub load_category__prompt_for_more {
    my ($in, $modules_conf, $category, @l) = @_;

    (my $msg_type = $category) =~ s/\|.*//;

    while (1) {
	my $msg = @l ?
	  [ N("Found %s interfaces", join(", ", map { qq("$_") } @l)),
	    N("Do you have another one?") ] :
	  N("Do you have any %s interfaces?", $msg_type);

	my $r = 'No';
	$in->ask_from_({ messages => $msg,
			 if_($category =~ m!disk/.*(sata|scsi|hardware_raid|usb|firewire)!, interactive_help_id => 'setupSCSI'),
		       }, 
		       [ { list => [ N_("Yes"), N_("No"), N_("See hardware info") ], val => \$r, type => 'list', format => \&translate } ]);
	if ($r eq "No") { return @l }
	if ($r eq "Yes") {
	    push @l, load_category__prompt($in, $modules_conf, $category) || next;
	} else {
	    $in->ask_warn('', join("\n", detect_devices::stringlist()));
	}
    }
}

my %category2text = (
    'bus/usb' => N_("Installing driver for USB controller"),
    'bus/firewire' => N_("Installing driver for firewire controller %s"),
    'disk/ide|scsi|hardware_raid|sata|firewire' => N_("Installing driver for hard drive controller %s"),
    list_modules::ethernet_categories() => N_("Installing driver for ethernet controller %s"),
);

sub wait_load_module {
    my ($in, $category, $text, $module) = @_;
    my $msg = do {
	if (my $t = $category2text{$category}) {
	    sprintf(translate($t), $text);
	} else {
	    #-PO: the first %s is the card type (scsi, network, sound,...)
	    #-PO: the second is the vendor+model name
	    N("Installing driver for %s card %s", $category, $text);
	}
    };
    $in->wait_message('', [ $msg, if_($::expert, N("(module %s)", $module)) ]);
}

sub load_module__ask_options {
    my ($in, $module_descr, $parameters) = @_;

    my @parameters = map { [ @$_[0, 1, 2] ] } @$parameters;

    if (@parameters) {
	$in->ask_from('', 
		      N("You may now provide options to module %s.\nNote that any address should be entered with the prefix 0x like '0x123'", $module_descr), 
		      [ map { { label => $_->[0] . ($_->[1] ? " ($_->[1])" : ''), help => $_->[2], val => \$_->[3] } } @parameters ],
		     ) or return;
	join(' ', map { if_($_->[3], "$_->[0]=$_->[3]") } @parameters);
    } else {
	my $s = $in->ask_from_entry('',
N("You may now provide options to module %s.
Options are in format ``name=value name2=value2 ...''.
For instance, ``io=0x300 irq=7''", $module_descr), N("Module options:")) or return;