[Slim-Checkins] r12560 - in /trunk/server: HTML/EN/html/wizard.js HTML/EN/settings/server/wizard.html Slim/Web/Pages/Home.pm Slim/Web/Settings/Server/Wizard.pm strings.txt
mherger at svn.slimdevices.com
mherger at svn.slimdevices.com
Wed Aug 15 03:14:41 PDT 2007
Author: mherger
Date: Wed Aug 15 03:14:40 2007
New Revision: 12560
URL: http://svn.slimdevices.com?rev=12560&view=rev
Log:
Bug: n/a
Description: wizardry
- when slimserver web interface is accessed for the first time, redirect to the wizard
- when run for the first time, wizard will try to guess the language setting from the browser's accept-language header
Modified:
trunk/server/HTML/EN/html/wizard.js
trunk/server/HTML/EN/settings/server/wizard.html
trunk/server/Slim/Web/Pages/Home.pm
trunk/server/Slim/Web/Settings/Server/Wizard.pm
trunk/server/strings.txt
Modified: trunk/server/HTML/EN/html/wizard.js
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/html/wizard.js?rev=12560&r1=12559&r2=12560&view=diff
==============================================================================
--- trunk/server/HTML/EN/html/wizard.js (original)
+++ trunk/server/HTML/EN/html/wizard.js Wed Aug 15 03:14:40 2007
@@ -90,7 +90,8 @@
case 'summary' :
if (offset > 0) {
document.forms.wizardForm.submit();
- window.close();
+ if (!firsttimerun)
+ window.close();
}
else {
this.nextBtn.setText(strings['next']);
Modified: trunk/server/HTML/EN/settings/server/wizard.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/settings/server/wizard.html?rev=12560&r1=12559&r2=12560&view=diff
==============================================================================
--- trunk/server/HTML/EN/settings/server/wizard.html (original)
+++ trunk/server/HTML/EN/settings/server/wizard.html Wed Aug 15 03:14:40 2007
@@ -13,6 +13,7 @@
var showproxy = [% showProxy ? "true" : "false" %];
var showitunes = [% showiTunes ? "true" : "false" %];
var showmusicip = [% showMusicIP ? "true" : "false" %];
+ var firsttimerun = [% firstTimeRun ? "true" : "false" %];
var strings = new Array();
strings['previous'] = "[% "SETUP_WIZARD_PREVIOUS" | string %]";
@@ -422,6 +423,9 @@
<div>[% "SETUP_WIZARD_SUMMARY_RESCAN" | string %]</div>
</div>
+ [% IF firstTimeRun %]
+ <input name="firstTimeRunCompleted" type="hidden" value="1">
+ [% END %]
<input name="saveSettings" type="hidden" value="1">
</form>
</div>
Modified: trunk/server/Slim/Web/Pages/Home.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Pages/Home.pm?rev=12560&r1=12559&r2=12560&view=diff
==============================================================================
--- trunk/server/Slim/Web/Pages/Home.pm (original)
+++ trunk/server/Slim/Web/Pages/Home.pm Wed Aug 15 03:14:40 2007
@@ -10,6 +10,7 @@
use strict;
use POSIX ();
+use HTTP::Status qw(RC_MOVED_TEMPORARILY);
use base qw(Slim::Web::Pages);
@@ -35,8 +36,17 @@
}
sub home {
- my ($class, $client, $params) = @_;
+ my ($class, $client, $params, $gugus, $httpClient, $response) = @_;
+
+ my $template = $params->{"path"} =~ /home\.(htm|xml)/ ? 'home.html' : 'index.html';
+ # redirect to the setup wizard if it has never been run before
+ if (!$prefs->get('wizardDone')) {
+ $response->code(RC_MOVED_TEMPORARILY);
+ $response->header('Location' => '/settings/server/wizard.html');
+ return Slim::Web::HTTP::filltemplatefile($template, $params);
+ }
+
my %listform = %$params;
$params->{'nosetup'} = 1 if $::nosetup;
@@ -107,8 +117,6 @@
$class->addLibraryStats($params);
- my $template = $params->{"path"} =~ /home\.(htm|xml)/ ? 'home.html' : 'index.html';
-
return Slim::Web::HTTP::filltemplatefile($template, $params);
}
Modified: trunk/server/Slim/Web/Settings/Server/Wizard.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Settings/Server/Wizard.pm?rev=12560&r1=12559&r2=12560&view=diff
==============================================================================
--- trunk/server/Slim/Web/Settings/Server/Wizard.pm (original)
+++ trunk/server/Slim/Web/Settings/Server/Wizard.pm Wed Aug 15 03:14:40 2007
@@ -7,12 +7,14 @@
use strict;
use base qw(Slim::Web::Settings);
+use I18N::LangTags qw(extract_language_tags);
+use HTTP::Status qw(RC_MOVED_TEMPORARILY);
use Slim::Utils::Log;
use Slim::Utils::Prefs;
my $showProxy = 1;
-my $prefs = preferences('server');
+my $serverPrefs = preferences('server');
my $log = Slim::Utils::Log->addLogCategory({
'category' => 'wizard',
@@ -51,13 +53,42 @@
}
sub handler {
- my ($class, $client, $paramRef, $pageSetup) = @_;
+ my ($class, $client, $paramRef, $pageSetup, $httpClient, $response) = @_;
+ $paramRef->{'languageoptions'} = Slim::Utils::Strings::languageOptions();
+
+ # make sure we only enforce the wizard at the very first startup
+ if (!$serverPrefs->get('wizardDone')) {
+ $serverPrefs->set('wizardDone', 1);
+ $paramRef->{'firstTimeRun'} = 1;
+
+ # try to guess the local language setting
+ # only on non-Windows systems, as the Windows installer is setting the langugae
+ if (Slim::Utils::OSDetect::OS() ne 'win'
+ && defined $response->{'_request'}->{'_headers'}->{'accept-language'}) {
+
+ $log->debug("Accepted-Languages: " . $response->{'_request'}->{'_headers'}->{'accept-language'});
+
+ foreach my $language (extract_language_tags($response->{'_request'}->{'_headers'}->{'accept-language'})) {
+ $language = uc($language);
+ $language =~ s/-/_/; # we're using zh_cn, the header says zh-cn
+
+ $log->debug("trying language: " . $language);
+ if (defined $paramRef->{'languageoptions'}->{$language}) {
+ $serverPrefs->set('language', $language);
+ $log->info("selected language: " . $language);
+ last;
+ }
+ }
+
+ }
+ }
+
# handle language separately, as it is in its own form
if ($paramRef->{'saveLanguage'}) {
- preferences('server')->set('language', $paramRef->{'language'});
+ $serverPrefs->set('language', $paramRef->{'language'});
}
- $paramRef->{'prefs'}->{'language'} = preferences('server')->get('language');
+ $paramRef->{'prefs'}->{'language'} = Slim::Utils::Strings::getLanguage();
foreach my $namespace (keys %prefs) {
foreach my $pref (@{$prefs{$namespace}}) {
@@ -90,11 +121,17 @@
}
}
- $paramRef->{'showProxy'} = $showProxy;
- $paramRef->{'showiTunes'} = !Slim::Plugin::iTunes::Common->canUseiTunesLibrary();
- $paramRef->{'showMusicIP'} = !Slim::Plugin::MusicMagic::Plugin::canUseMusicMagic();
- $paramRef->{'languageoptions'} = Slim::Utils::Strings::languageOptions();
- $paramRef->{'serverOS'} = Slim::Utils::OSDetect::OS();
+ # if the wizard has been run for the first time, redirect to the main we page
+ if ($paramRef->{'firstTimeRunCompleted'}) {
+ $response->code(RC_MOVED_TEMPORARILY);
+ $response->header('Location' => '/');
+ }
+ else {
+ $paramRef->{'showProxy'} = $showProxy;
+ $paramRef->{'showiTunes'} = !Slim::Plugin::iTunes::Common->canUseiTunesLibrary();
+ $paramRef->{'showMusicIP'} = !Slim::Plugin::MusicMagic::Plugin::canUseMusicMagic();
+ $paramRef->{'serverOS'} = Slim::Utils::OSDetect::OS();
+ }
return Slim::Web::HTTP::filltemplatefile($class->page, $paramRef);
}
Modified: trunk/server/strings.txt
URL: http://svn.slimdevices.com/trunk/server/strings.txt?rev=12560&r1=12559&r2=12560&view=diff
==============================================================================
--- trunk/server/strings.txt (original)
+++ trunk/server/strings.txt Wed Aug 15 03:14:40 2007
@@ -491,6 +491,9 @@
IT Musica
NL Mijn muziek
NO Min musikk
+
+OTHER_SERVICES
+ EN Other Services
GAMES
CS Hry
@@ -6993,7 +6996,7 @@
EN On the left you can select the local folder where your music collection is stored.
SETUP_WIZARD_SHARE_WIN
- EN <br/><br/>If you want to use a network share hosted on another computer or a NAS, you can do this by entering the UNC path to the share in the form \\yourserver\share in the text field below. Then press the > button.<br/><br/>Make sure either the music share is configured for anonymous access or make SlimServer run as a user known to the fileserver hosting your music files.
+ EN <br/><br/>If you want to use a network share hosted on another computer or a NAS, you can do this by entering the UNC path to the share in the form \\yourserver\share in the text field below. Then press the > button.<br/><br/>Make sure either the music share is configured for anonymous access or make SlimServer run as a user known to the fileserver hosting your music files.<br/><br/>Please note, that SlimServer can't access letters mapped drive to network shares.
SETUP_WIZARD_SHARE_OTHERS
EN <br/><br/>If you want to use a network share hosted on another computer or a NAS, you'll need to first mount the share to your filesystem. It will then be available in the folder tree.
More information about the checkins
mailing list