[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