[Slim-Checkins] r10587 - in /trunk/server:
HTML/EN/setupfiletypes.html Slim/Web/HTTP.pm
Slim/Web/Pages.pm Slim/Web/Setup.pm strings.txt
kdf at svn.slimdevices.com
kdf at svn.slimdevices.com
Fri Nov 3 23:16:13 PST 2006
Author: kdf
Date: Fri Nov 3 23:16:09 2006
New Revision: 10587
URL: http://svn.slimdevices.com?rev=10587&view=rev
Log:
Bug: 3267
Description: rework for file types page. Uses it's own handler and potentially scalable to allow multiple options for binary usage
Added:
trunk/server/HTML/EN/setupfiletypes.html
Modified:
trunk/server/Slim/Web/HTTP.pm
trunk/server/Slim/Web/Pages.pm
trunk/server/Slim/Web/Setup.pm
trunk/server/strings.txt
Added: trunk/server/HTML/EN/setupfiletypes.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/setupfiletypes.html?rev=10587&view=auto
==============================================================================
--- trunk/server/HTML/EN/setupfiletypes.html (added)
+++ trunk/server/HTML/EN/setupfiletypes.html Fri Nov 3 23:16:09 2006
@@ -1,0 +1,79 @@
+[% FILTER null %]
+
+ [% pwd_list = BLOCK %]
+
+ <a href="setup.html?page=BASIC_SERVER_SETTINGS">[% "SERVER_SETTINGS" | string %]</a>
+
+ / <a href="setupfiletypes.html">[% page | string %]</a>
+
+ [% END %]
+
+ [% pageHeaderInfo = BLOCK %]
+ [%- PROCESS setting_chooser.html setting_chooser_noHome = 1 %]
+ [% END %]
+
+[% END %]
+
+[% pagetitle = pagetitle; pageicon = 'settings'; noSpacer = 1; PROCESS pageheader.html %]
+
+<div class="statusarea">
+ [% IF warning %]
+ [% warning %]
+ [% END %]
+</div>
+
+<form method="post" action="setupfiletypes.html">
+
+ <input type=hidden value="[% page %]" name="page">
+
+ <div class="settingSection">
+
+ <div class="prefHead">[% "SETUP_DISABLEDEXTENSIONSAUDIO" | string | upper %]</div>
+ <div class="prefDesc">[% "SETUP_DISABLEDEXTENSIONSAUDIO_DESC" | string %]</div>
+
+ <input type=text class="stdedit" name="disabledextensionsaudio" id="disabledextensionsaudio" value="[% disabledextensionsaudio %]" size="40">
+
+ <div class="prefHead">[% "SETUP_DISABLEDEXTENSIONSPLAYLIST" | string | upper %]</div>
+ <div class="prefDesc">[% "SETUP_DISABLEDEXTENSIONSPLAYLIST_DESC" | string %]</div>
+
+ <input type=text class="stdedit" name="disabledextensionsplaylist" id="disabledextensionsplaylist" value="[% disabledextensionsplaylist %]" size="40">
+
+ <div class="prefHead">[% "SETUP_GROUP_FORMATS_CONVERSION" | string | upper %]</div>
+ <div class="prefDesc">[% "SETUP_GROUP_FORMATS_CONVERSION_DESC" | string %]</div>
+
+ <table border="0" cellspacing="0" width="100%">
+ <tr><th>[% 'FILE_FORMAT' | string %]</th><th>[% 'STREAM_FORMAT' | string %]</th><th>[% 'DECODER' | string %]</th></tr>
+
+ [% FOREACH format = formats %]
+ [% frame = format.input != loop.prev.input %]
+ [% IF frame %]
+ <tr style="height: 5px;"><td class="[% odd ? "odd" : "even" %]" colspan="3"></td></tr>
+ [% odd = (not odd) %]<tr style="height: 5px;"><td class="[% odd ? "odd" : "even" %]" colspan="3"></td></tr>
+ [% END %]
+ <tr>
+ <td class="[% odd ? "odd" : "even" %]">[% IF frame %][% format.input | string %][% END %]</td>
+
+ <td class="[% odd ? "odd" : "even" %]"><label for="[% format.profile %]" class="stdlabel">[% format.output | string %]</label></td>
+
+ <td class="[% odd ? "odd" : "even" %]">
+ <select class="stdedit" name="[% format.profile %]" id="[% format.profile %]">
+
+ [%- FOREACH value = format.binaries -%]
+ <option [% IF loop.index == format.enabled %]selected [% END %]value="[% value %]">[% value | getstring %]</option>
+ [%- END -%]
+
+ </select>
+ </td>
+ </tr>
+ [% END %]
+ <tr style="height: 5px;"><td class="[% odd ? "odd" : "even" %]" colspan="3"></td></tr>
+ </table>
+
+ <p><input name="submit" type="submit" class="stdclick" value="[% "SAVE_SETTINGS" | string %]"></p>
+</form>
+
+</div>
+
+<p></p>
+
+[% PROCESS pagefooter.html %]
Modified: trunk/server/Slim/Web/HTTP.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/HTTP.pm?rev=10587&r1=10586&r2=10587&view=diff
==============================================================================
--- trunk/server/Slim/Web/HTTP.pm (original)
+++ trunk/server/Slim/Web/HTTP.pm Fri Nov 3 23:16:09 2006
@@ -99,9 +99,11 @@
# \&Slim::Web::Pages::status => '\bp0=rescan\b'
# means inisist on CSRF protection for the status command *only*
# if the URL includes p0=rescan
- \&Slim::Web::Setup::setup_HTTP => '.',
- \&Slim::Web::EditPlaylist::editplaylist => '.',
- \&Slim::Web::Pages::Status::status => '(p0=debug|p0=pause|p0=stop|p0=play|p0=sleep|p0=playlist|p0=mixer|p0=display|p0=button|p0=rescan|(p0=(|player)pref\b.*p2=[^\?]|p2=[^\?].*p0=(|player)pref))',
+ \&Slim::Web::Setup::setup_HTTP => '.',
+ \&Slim::Web::Setup::handleDebugSettings => '.',
+ \&Slim::Web::Setup::handleFileTypeSettings => '.',
+ \&Slim::Web::EditPlaylist::editplaylist => '.',
+ \&Slim::Web::Pages::Status::status => '(p0=debug|p0=pause|p0=stop|p0=play|p0=sleep|p0=playlist|p0=mixer|p0=display|p0=button|p0=rescan|(p0=(|player)pref\b.*p2=[^\?]|p2=[^\?].*p0=(|player)pref))',
);
# flag for when we are in a child process
Modified: trunk/server/Slim/Web/Pages.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Pages.pm?rev=10587&r1=10586&r2=10587&view=diff
==============================================================================
--- trunk/server/Slim/Web/Pages.pm (original)
+++ trunk/server/Slim/Web/Pages.pm Fri Nov 3 23:16:09 2006
@@ -43,6 +43,7 @@
Slim::Web::HTTP::addPageFunction(qr/^tunein\.(?:htm|xml)/,\&tuneIn);
Slim::Web::HTTP::addPageFunction(qr/^update_firmware\.(?:htm|xml)/,\&update_firmware);
Slim::Web::HTTP::addPageFunction(qr/^debugging\.(?:htm|xml)/, \&Slim::Web::Setup::handleDebugSettings);
+ Slim::Web::HTTP::addPageFunction(qr/^setupfiletypes\.(?:htm|xml)/, \&Slim::Web::Setup::handleFileTypeSettings);
# pull in the memory usage module if requested.
if (logger('server.memory')->is_info) {
Modified: trunk/server/Slim/Web/Setup.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Setup.pm?rev=10587&r1=10586&r2=10587&view=diff
==============================================================================
--- trunk/server/Slim/Web/Setup.pm (original)
+++ trunk/server/Slim/Web/Setup.pm Fri Nov 3 23:16:09 2006
@@ -1600,149 +1600,7 @@
}
}# end of setup{'INTERFACE_SETTINGS'} hash
- ,'FORMATS_SETTINGS' => {
- 'title' => string('FORMATS_SETTINGS')
- ,'parent' => 'BASIC_SERVER_SETTINGS'
- ,'preEval' => sub {
- my ($client,$paramref,$pageref) = @_;
- my $i = 0;
- my %formats = map {$_ => 1} Slim::Utils::Prefs::getArray('disabledformats');
- my $formatslistref = Slim::Player::TranscodingHelper::Conversions();
-
- foreach my $formats (sort {$a cmp $b}(keys %{$formatslistref})) {
- next if $formats =~ /\-transcode\-/;
- my $oldVal = exists $formats{$formats} ? 0 : (Slim::Player::TranscodingHelper::checkBin($formats) ? 1 : 0);
- if (exists $paramref->{"formatslist$i"} && $paramref->{"formatslist$i"} == $oldVal) {
- delete $paramref->{"formatslist$i"};
- }
- $i++;
- }
- $pageref->{'Prefs'}{'formatslist'}{'arrayMax'} = $i - 1;
- }
- ,'postChange' => sub {
- my ($client,$paramref,$pageref) = @_;
- my $i = 0;
- my %formats = map {$_ => 1} Slim::Utils::Prefs::getArray('disabledformats');
-
- Slim::Utils::Prefs::delete('disabledformats');
-
- my $formatslistref = Slim::Player::TranscodingHelper::Conversions();
-
- foreach my $formats (sort {$a cmp $b}(keys %{$formatslistref})) {
- next if $formats =~ /\-transcode\-/;
- my $binAvailable = Slim::Player::TranscodingHelper::checkBin($formats);
-
- # First time through, set the value of the checkbox
- # based on whether the conversion was explicitly
- # disabled or implicitly disallowed because the
- # corresponding binary does not exist.
- if (!exists $paramref->{"formatslist$i"}) {
- $paramref->{"formatslist$i"} = exists $formats{$formats} ? 0 : ($binAvailable ? 1 : 0);
- }
- # If the conversion pref is checked confirm that
- # it's allowed to be checked.
- elsif ($paramref->{"formatslist$i"} && !$binAvailable) {
- $paramref->{'warning'} .=
- string('SETUP_FORMATSLIST_MISSING_BINARY') .
- " " . $formatslistref->{$formats}."<br>";
- $paramref->{"formatslist$i"} = $binAvailable;
- }
-
- # If the conversion pref is not checked, persist
- # the pref only in the explicit change case: if
- # the binary is available or if it previously was
- # explicitly disabled. This way we don't persist
- # the pref if it wasn't explicitly changed.
- if (!$paramref->{"formatslist$i"} && ($binAvailable || exists $formats{$formats})) {
-
- Slim::Utils::Prefs::push('disabledformats',$formats);
- }
-
- $i++;
- }
-
- foreach my $group (Slim::Utils::Prefs::getArray('disabledformats')) {
- delGroup('formats',$group,1);
- }
- }
-
- ,'GroupOrder' => [qw(Default FormatsList)]
- ,'Groups' => {
-
- 'Default' => {
- 'PrefOrder' => [qw(disabledextensionsaudio disabledextensionsplaylist)],
- 'GroupHead' => 'SETUP_GROUP_FORMATS_EXTENSIONS',
- },
-
- 'FormatsList' => {
- 'PrefOrder' => ['formatslist'],
- 'PrefsInTable' => 1,
- 'Suppress_PrefHead' => 1,
- 'Suppress_PrefDesc' => 1,
- 'Suppress_PrefLine' => 1,
- 'Suppress_PrefSub' => 1,
- 'GroupLine' => 1,
- 'GroupSub' => 1,
- 'GroupHead' => 'SETUP_GROUP_FORMATS_CONVERSION',
- 'GroupDesc' => 'SETUP_GROUP_FORMATS_CONVERSION_DESC',
- 'GroupPrefHead' => '<tr><th> ' .
- '</th><th>' . string('FILE_FORMAT') .
- '</th><th>' . string('STREAM_FORMAT') .
- '</th><th>' . string('DECODER') .
- '</th></tr>',
- }
- },
-
- 'Prefs' => {
- 'disabledextensionsaudio' => {
-
- 'validate' => \&Slim::Utils::Validate::acceptAll,
- 'inputTemplate' => 'setup_input_txt.html',
- 'PrefSize' => 'large',
- },
-
- 'disabledextensionsplaylist' => {
-
- 'validate' => \&Slim::Utils::Validate::acceptAll,
- 'inputTemplate' => 'setup_input_txt.html',
- 'PrefSize' => 'large',
- },
-
- 'formatslist' => {
- 'isArray' => 1
- ,'dontSet' => 1
- ,'validate' => \&Slim::Utils::Validate::trueFalse
- ,'inputTemplate' => 'setup_input_array_chk.html'
- ,'arrayMax' => undef #set in preEval
- ,'changeMsg' => 'SETUP_FORMATSLIST_CHANGE'
- ,'externalValue' => sub {
- my ($client,$value,$key) = @_;
-
- if ($key =~ /\D+(\d+)$/) {
- my $formatslistref = Slim::Player::TranscodingHelper::Conversions();
- my $profile = (sort {$a cmp $b} (grep {$_ !~ /transcode/} (keys %{$formatslistref})))[$1];
- my @profileitems = split('-', $profile);
- pop @profileitems; # drop ID
- $profileitems[0] = string($profileitems[0]);
- $profileitems[1] = string($profileitems[1]);
- $profileitems[2] = $formatslistref->{$profile}; #replace model with binary string
- my $dec = $formatslistref->{$profile};
- $dec =~ s{
- ^\[(.*?)\](.*?\|?\[(.*?)\].*?)?
- }{
- $profileitems[2] = $1;
- if (defined $3) {$profileitems[2] .= "/".$3;}
- }iegsx;
- $profileitems[2] = '(built-in)' unless defined $profileitems[2] && $profileitems[2] ne '-';
-
- return join('</td><td>', @profileitems);
- } else {
- return $value;
- }
- }
- }
- }
- } #end of setup{'formats'}
+ ,'FORMATS_SETTINGS' => { }
,'BEHAVIOR_SETTINGS' => {
'title' => string('BEHAVIOR_SETTINGS'),
@@ -2299,6 +2157,86 @@
fillAlarmOptions();
}
+sub handleFileTypeSettings {
+ my ($client, $paramRef, $pageSetup) = @_;
+
+ # If this is a settings update
+ if ($paramRef->{'submit'}) {
+
+ Slim::Utils::Prefs::set('disabledextensionsaudio', $paramRef->{'disabledextensionsaudio'});
+ Slim::Utils::Prefs::set('disabledextensionsplaylist', $paramRef->{'disabledextensionsplaylist'});
+
+ my %disabledformats = map {$_ => 1} Slim::Utils::Prefs::getArray('disabledformats');
+
+ Slim::Utils::Prefs::delete('disabledformats');
+
+ my $formatslistref = Slim::Player::TranscodingHelper::Conversions();
+
+ foreach my $profile (sort {$a cmp $b} (grep {$_ !~ /transcode/} (keys %{$formatslistref}))) {
+
+ # If the conversion pref is enabled confirm that
+ # it's allowed to be checked.
+ if ($paramRef->{"$profile"} ne 'DISABLED' && $disabledformats{$profile}) {
+
+ if (!Slim::Player::TranscodingHelper::checkBin($profile)) {
+
+ $paramRef->{'warning'} .=
+ string('SETUP_FORMATSLIST_MISSING_BINARY') . " $@ ".string('FOR')." $profile<br>";
+
+ Slim::Utils::Prefs::push('disabledformats',$profile);
+ }
+
+ } elsif ($paramRef->{"$profile"} eq 'DISABLED') {
+
+ Slim::Utils::Prefs::push('disabledformats',$profile);
+ }
+ }
+ }
+
+ my %disabledformats = map {$_ => 1} Slim::Utils::Prefs::getArray('disabledformats');
+ my $formatslistref = Slim::Player::TranscodingHelper::Conversions();
+ my @formats = ();
+
+ foreach my $profile (sort {$a cmp $b} (grep {$_ !~ /transcode/} (keys %{$formatslistref}))) {
+
+ my @profileitems = split('-', $profile);
+ my @binaries = 'DISABLED';
+
+ # TODO: expand this to handle multiple command lines, but use binary case for now
+ my $enabled = Slim::Player::TranscodingHelper::checkBin($profile) ? 1 : 0;
+
+ # build setup string from commandTable
+ my $cmdline = $formatslistref->{$profile};
+ my $binstring;
+ $cmdline =~ s{
+ ^\[(.*?)\](.*?\|?\[(.*?)\].*?)?
+ }{
+ $binstring = $1;
+ if (defined $3) {$binstring .= "/".$3;}
+ }iegsx;
+ push @binaries, (defined $binstring && $binstring ne '-' ? $binstring : 'NATIVE');
+
+ push @formats, {
+ 'profile' => $profile,
+ 'input' => $profileitems[0],
+ 'output' => $profileitems[1],
+ 'binaries' => \@binaries,
+ 'enabled' => $enabled,
+ };
+ }
+
+ $paramRef->{'formats'} = \@formats;
+ $paramRef->{'page'} = 'FORMATS_SETTINGS';
+
+ # Needed to generate the drop down settings chooser list.
+ $paramRef->{'additionalLinks'} = \%Slim::Web::Pages::additionalLinks;
+
+ $paramRef->{'disabledextensionsaudio'} = Slim::Utils::Prefs::get('disabledextensionsaudio');
+ $paramRef->{'disabledextensionsplaylist'} = Slim::Utils::Prefs::get('disabledextensionsplaylist');
+
+ return Slim::Web::HTTP::filltemplatefile('setupfiletypes.html', $paramRef);
+}
+
sub handleDebugSettings {
my ($client, $paramRef, $pageSetup) = @_;
@@ -2920,6 +2858,10 @@
if ($page eq "DEBUGGING_SETTINGS") {
Slim::Web::Pages->addPageLinks('setup', { 'DEBUGGING_SETTINGS' => 'debugging.html' });
+
+ } elsif ($page eq "FORMATS_SETTINGS") {
+
+ Slim::Web::Pages->addPageLinks('setup', { 'FORMATS_SETTINGS' => 'setupfiletypes.html' });
} else {
Modified: trunk/server/strings.txt
URL: http://svn.slimdevices.com/trunk/server/strings.txt?rev=10587&r1=10586&r2=10587&view=diff
==============================================================================
--- trunk/server/strings.txt (original)
+++ trunk/server/strings.txt Fri Nov 3 23:16:09 2006
@@ -7644,6 +7644,9 @@
SV Avaktiverad
ZH_CN æ¤é
+NATIVE
+ EN Native
+
CLEAR_PLAYLIST
CS VyÄistit playlist
DE Wiedergabeliste Löschen
More information about the checkins
mailing list