[Slim-Checkins] r12510 - in /trunk/server: HTML/EN/html/wizard.js HTML/EN/settings/server/squeezenetwork.html HTML/EN/settings/server/wizard.html Slim/Web/Settings/Server/SqueezeNetwork.pm Slim/Web/Settings/Server/Wizard.pm strings.txt

mherger at svn.slimdevices.com mherger at svn.slimdevices.com
Wed Aug 8 13:23:41 PDT 2007


Author: mherger
Date: Wed Aug  8 13:23:41 2007
New Revision: 12510

URL: http://svn.slimdevices.com?rev=12510&view=rev
Log:
Bug: n/a
Description: more wizardry
- conditionally display pages depending on music source selection
- verify SQN credentials
- don't save SQN settings when login or password is missing

Modified:
    trunk/server/HTML/EN/html/wizard.js
    trunk/server/HTML/EN/settings/server/squeezenetwork.html
    trunk/server/HTML/EN/settings/server/wizard.html
    trunk/server/Slim/Web/Settings/Server/SqueezeNetwork.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=12510&r1=12509&r2=12510&view=diff
==============================================================================
--- trunk/server/HTML/EN/html/wizard.js (original)
+++ trunk/server/HTML/EN/html/wizard.js Wed Aug  8 13:23:41 2007
@@ -1,8 +1,9 @@
 Wizard = function(){
 	// we do not always show the language selection page
 	page = 0;
-	pages = new Array('welcome', 'proxy', 'sqn', 'source', 'audiodir', 'playlistdir', 'itunes', 'musicip', 'summary');
+	pages = new Array('welcome', 'proxy', 'sqn', 'source', 'audiodir', 'itunes', 'musicip', 'summary');
 	folderselectors = new Array();
+	sqnValidated = false;
 
 	return {
 		init : function(){
@@ -30,17 +31,10 @@
 			layout.add('south', new Ext.ContentPanel('footer', {fitToFrame:true}));
 			layout.add('west', new Ext.ContentPanel('west', {fitToFrame:true}));
 			layout.add('center', new Ext.ContentPanel('main'));
-			layout.endUpdate();
-			flipPages(page);
 
 			folderselectors['audiodir'] = new FileSelector('audiodirselector', {
 				filter: 'foldersonly',
 				input: 'audiodir'
-			});
-
-			folderselectors['playlistdir'] = new FileSelector('playlistdirselector', {
-				filter: 'foldersonly',
-				input: 'playlistdir'
 			});
 
 			folderselectors['itunes'] = new FileSelector('itunespathselector', {
@@ -48,41 +42,91 @@
 				filter: 'filetype:xml'
 			});
 
-			Ext.get('previous').on('click', this.onPrevious);
-			Ext.get('next').on('click', this.onNext);
-			Ext.get('finish').on('click', this.onFinish);
-			Ext.get('language').on('change', this.onLanguageChange);
+			Ext.get('previous').on('click', this.onPrevious, this);
+			Ext.get('next').on('click', this.onNext, this);
+			Ext.get('finish').on('click', this.onFinish, this);
+			Ext.get('language').on('change', this.onLanguageChange, this);
+			Ext.get('sn_verify').on('click', this.verifySqnAccount, this);
+
+			this.flipPages(page);
+			layout.endUpdate();
 		},
 
 		onNext : function(){
-			switch (pages[page]) {
-				// don't display proxy page, except if showproxy is set
-				case 'welcome' :
-					page += 2 - showproxy
-					break;
-				default:
-					page++;
-					break;
-			}
-
-			page = Math.min(page, pages.length-1);
-			flipPages(page);
+			page = this.whichPage(page, 1);
+			this.flipPages();
 		},
 
 		onPrevious : function(){
-			switch (pages[page]) {
-				// don't display proxy page, except if showproxy is set
-				case 'sqn' :
-					page -= 2 - showproxy
+			page = this.whichPage(page, -1);
+			this.flipPages();
+		},
+		
+		whichPage : function(oldValue, offset){
+			if (pages[oldValue] == 'sqn')
+				this.verifySqnAccount();
+
+			newPage = oldValue + offset;
+			if (offset < 0) newPage = Math.max(newPage, 0);
+			else newPage = Math.min(newPage, pages.length-1);
+			
+			switch (pages[newPage]) {
+				case 'proxy' :
+					if (!showproxy)
+						newPage = this.whichPage(newPage, offset);
 					break;
-				default:
-					page--;
+
+				case 'audiodir' :
+					if (el = Ext.get('useAudiodir')) {
+						if (!el.dom.checked)
+							newPage = this.whichPage(newPage, offset);
+					}
+					break;
+
+				case 'itunes' :
+					if (el = Ext.get('useiTunes')) {
+						if (!el.dom.checked)
+							newPage = this.whichPage(newPage, offset);
+					}
+					break;
+
+				case 'musicip' :
+					if (el = Ext.get('useMusicIP')) {
+						if (!el.dom.checked)
+							newPage = this.whichPage(newPage, offset);
+					}
+					break;
+
+				default :
 					break;
 			}
+			return newPage;
+		},
 
-			page = Math.max(page, 0);
-			flipPages(page);
-		},
+		flipPages : function(){
+			for (x = 0; x < pages.length; x++) {
+				if (el = Ext.get(pages[x] + '_h')) {
+					el.setVisible(page == x, false);
+				}
+		
+				if (el = Ext.get(pages[x] + '_m')) {
+					el.setVisible(page == x, false);
+				}
+				
+				// workaround for FF problem: frame would be displayed on wrong page,
+				// if class is applied in the HTML code
+				if (folderselector = folderselectors[pages[x]]) {
+					el = Ext.get(folderselector.id);
+					if (el && page == x) {
+						el.addClass("folderselector");
+					}
+					else if (el) {
+						el.removeClass("folderselector");
+					}
+				}
+			}
+		
+		},		
 		
 		onFinish : function(){
 			document.forms.wizardForm.submit();
@@ -91,33 +135,31 @@
 		
 		onLanguageChange : function(){
 			document.forms.languageForm.submit();
+		},
+		
+		verifySqnAccount : function(){
+			email = Ext.get('sn_email');
+			pw = Ext.get('sn_password');
+			
+			if (email && pw) {
+				email = email.dom.value;
+				pw = pw.dom.value;
+
+				Ext.get('sn_result').update('');
+
+				Ext.Ajax.request({
+					url: '/settings/server/squeezenetwork.html',
+					params: 'sn_email=' + email + '&sn_password=' + pw + '&saveSettings=1&AJAX=1',
+					scope: this,
+	
+					success: function(response, options){
+						result = response.responseText.split('|');
+						Ext.get('sn_result').update(result[1]);
+						this.sqnValidated = (result[0] == '1');
+					}
+				});
+			}
 		}
 	};   
 }();
 Ext.EventManager.onDocumentReady(Wizard.init, Wizard, true);
-
-function flipPages(newPage) {
-	for (x = 0; x < pages.length; x++) {
-		if (el = Ext.get(pages[x] + '_h')) {
-			el.setVisible(newPage == x, false);
-		}
-
-		if (el = Ext.get(pages[x] + '_m')) {
-			el.setVisible(newPage == x, false);
-		}
-		
-		// workaround for FF problem: frame would be displayed on wrong page,
-		// if class is applied in the HTML code
-		if (folderselector = folderselectors[pages[x]]) {
-			el = Ext.get(folderselector.id);
-			if (el && newPage == x) {
-				el.addClass("folderselector");
-			}
-			else if (el) {
-				el.removeClass("folderselector");
-			}
-		}
-	}
-
-}
-

Modified: trunk/server/HTML/EN/settings/server/squeezenetwork.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/settings/server/squeezenetwork.html?rev=12510&r1=12509&r2=12510&view=diff
==============================================================================
--- trunk/server/HTML/EN/settings/server/squeezenetwork.html (original)
+++ trunk/server/HTML/EN/settings/server/squeezenetwork.html Wed Aug  8 13:23:41 2007
@@ -1,3 +1,5 @@
+[% IF AJAX %][% validated.valid %]|[% warning %][% ELSE %]
+
 [% PROCESS settings/header.html %]
 
 	<!-- XXX: This will eventually have more stuff like a way to register for a new account, etc. -->
@@ -30,3 +32,4 @@
 
 [% PROCESS settings/footer.html %]
 
+[% END %]

Modified: trunk/server/HTML/EN/settings/server/wizard.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/settings/server/wizard.html?rev=12510&r1=12509&r2=12510&view=diff
==============================================================================
--- trunk/server/HTML/EN/settings/server/wizard.html (original)
+++ trunk/server/HTML/EN/settings/server/wizard.html Wed Aug  8 13:23:41 2007
@@ -12,8 +12,7 @@
 		<script type="text/javascript" src="/html/ext/ext-all.js"></script>
 
 		<script type="text/javascript">
-			var showproxy = [% showProxy %];
-			var showitunes = [% showiTunes ? 1 : 0 %];
+			var showproxy = [% showProxy ? "true" : "false" %];
 		</script>
 
 		<script type="text/javascript" src="/html/fileselector.js"></script>
@@ -78,7 +77,6 @@
 			<div id="sqn_h" class="page">[% "SETUP_WIZARD_SQN" | string %]</div>
 			<div id="source_h" class="page">[% "SETUP_WIZARD_SOURCE" | string %]</div>
 			<div id="audiodir_h" class="page">[% "SETUP_WIZARD_AUDIODIR" | string %]</div>
-			<div id="playlistdir_h" class="page">[% "SETUP_WIZARD_PLAYLISTDIR" | string %]</div>
 			<div id="itunes_h" class="page">[% "SETUP_WIZARD_ITUNES" | string %]</div>
 			<div id="musicip_h" class="page">[% "SETUP_WIZARD_MUSICIP" | string %]</div>
 			<div id="summary_h" class="page">[% "SETUP_WIZARD_SUMMARY" | string %]</div>
@@ -124,7 +122,12 @@
 						<td>[% "SETUP_SN_PASSWORD" | string %][% "COLON" | string %]&nbsp;</td>
 						<td><input type="password" class="stdedit" name="sn_password" id="sn_password" value="[% prefs.sn_password %]" size="40"></td>
 					</tr>
+					<tr>
+						<td>&nbsp;</td>
+						<td><input type="button" class="stdedit" name="sn_verify" id="sn_verify" value="[% "SETUP_WIZARD_SQN_VERIFY" | string %]"></td>
+					</tr>
 				</table></div>
+				<div id="sn_result"></div>
 			</div>
 
 			<div id="source_m" class="page">
@@ -135,11 +138,11 @@
 						<td>[% "SETUP_WIZARD_SOURCE_AUDIODIR" | string %]</td>
 					</tr>
 					<tr>
-						<td><input type="checkbox" name="itunes" id="itunes" [% IF prefs.itunes %]checked [% END %] value="1" class="stdedit"></td>
+						<td><input type="checkbox" name="useiTunes" id="useiTunes" [% IF prefs.itunes %]checked [% END %] value="1" class="stdedit"></td>
 						<td>[% "SETUP_WIZARD_SOURCE_ITUNES" | string %]</td>
 					</tr>
 					<tr>
-						<td><input type="checkbox" [% IF prefs.musicmagic %]checked [% END %] value="1" class="stdedit"></td>
+						<td><input type="checkbox" name="useMusicIP" id="useMusicIP" [% IF prefs.musicmagic %]checked [% END %] value="1" class="stdedit"></td>
 						<td>[% "SETUP_WIZARD_SOURCE_MUSICIP" | string %]</td>
 					</tr>
 				</table></div>
@@ -149,12 +152,6 @@
 				<div>[% "SETUP_WIZARD_AUDIODIR_DESC" | string %]</div>
 				<div id="audiodirselector"></div>
 				<div><input type="text" name="audiodir" id="audiodir" value="[% prefs.audiodir %]" class="stdedit" size="50"></div>
-			</div>
-
-			<div id="playlistdir_m" class="page">
-				<div>[% "SETUP_WIZARD_PLAYLISTDIR_DESC" | string %]</div>
-				<div id="playlistdirselector"></div>
-				<div><input type="text" name="playlistdir" id="playlistdir" value="[% prefs.playlistdir %]" class="stdedit" size="50"></div>
 			</div>
 
 			<div id="itunes_m" class="page">

Modified: trunk/server/Slim/Web/Settings/Server/SqueezeNetwork.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Settings/Server/SqueezeNetwork.pm?rev=12510&r1=12509&r2=12510&view=diff
==============================================================================
--- trunk/server/Slim/Web/Settings/Server/SqueezeNetwork.pm (original)
+++ trunk/server/Slim/Web/Settings/Server/SqueezeNetwork.pm Wed Aug  8 13:23:41 2007
@@ -45,10 +45,21 @@
 				client   => $client,
 				cb       => sub {
 					my $body = $class->saveSettings( $client, $params );
+
+					if ($params->{'AJAX'}) {
+						$params->{'warning'} = Slim::Utils::Strings::string('SETUP_SN_VALID_LOGIN');
+						$params->{'validated'}->{'valid'} = 1;
+					}
 					$callback->( $client, $params, $body, @args );
 				},
 				ecb      => sub {
-					$params->{warning} .= Slim::Utils::Strings::string('SETUP_SN_INVALID_LOGIN') . '<br/>';
+					if ($params->{'AJAX'}) {
+						$params->{'warning'} = Slim::Utils::Strings::string('SETUP_SN_INVALID_LOGIN'); 
+						$params->{'validated'}->{'valid'} = 0;
+					}
+					else {
+						$params->{warning} .= Slim::Utils::Strings::string('SETUP_SN_INVALID_LOGIN') . '<br/>';						
+					}
 					
 					delete $params->{sn_email};
 					delete $params->{sn_password};
@@ -59,6 +70,16 @@
 			);
 		
 			return;
+		}
+		else {
+			if ($params->{'AJAX'}) {
+				$params->{'warning'} = Slim::Utils::Strings::string('SETUP_SN_INVALID_LOGIN'); 
+				$params->{'validated'}->{'valid'} = 0;
+			}
+			else {
+				$params->{warning} .= Slim::Utils::Strings::string('SETUP_SN_INVALID_LOGIN') . '<br/>';						
+			}
+			delete $params->{'saveSettings'};
 		}
 	}
 

Modified: trunk/server/Slim/Web/Settings/Server/Wizard.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Settings/Server/Wizard.pm?rev=12510&r1=12509&r2=12510&view=diff
==============================================================================
--- trunk/server/Slim/Web/Settings/Server/Wizard.pm (original)
+++ trunk/server/Slim/Web/Settings/Server/Wizard.pm Wed Aug  8 13:23:41 2007
@@ -25,7 +25,17 @@
 
 	# try to connect to squeezenetwork.com to test for the need of proxy settings
 	# just don't start the wizard before the request has been answered/failed
-	my $http = Slim::Networking::SimpleAsyncHTTP->new(\&checkSqnCB, \&checkSqnError);
+	my $http = Slim::Networking::SimpleAsyncHTTP->new(
+		sub {
+			my $http = shift;
+			# TODO: check for a proxy server's answer
+			$showProxy = 0;
+		},
+		sub {
+			my $http = shift;
+			logger('wizard')->error("Couldn't connect to squeezenetwork.com - do we need a proxy?\n" . $http->error);
+		}
+	);
 	$http->get('http://www.squeezenetwork.com/');
 
 	$class->SUPER::new($class);
@@ -46,7 +56,7 @@
 
 	foreach my $namespace (keys %prefs) {
 		foreach my $pref (@{$prefs{$namespace}}) {
-			if ($paramRef->{'saveSettings'}) {	
+			if ($paramRef->{'saveSettings'} && defined $paramRef->{$pref}) {	
 				my (undef, $ok) = preferences($namespace)->set($pref, $paramRef->{$pref});
 			}
 
@@ -66,21 +76,6 @@
 	return Slim::Web::HTTP::filltemplatefile($class->page, $paramRef);
 }
 
-sub checkSqnCB {
-	my $http = shift;
-
-	# TODO: check for a proxy server's answer
-#	if ($http->{code} =~ /^[24]\d\d/) {
-		$showProxy = 0;
-#	}
-}
-
-sub checkSqnError {
-	my $http = shift;
-
-	logger('wizard')->error("Couldn't connect to squeezenetwork.com - do we need a proxy?\n" . $http->error);
-}
-
 1;
 
 __END__

Modified: trunk/server/strings.txt
URL: http://svn.slimdevices.com/trunk/server/strings.txt?rev=12510&r1=12509&r2=12510&view=diff
==============================================================================
--- trunk/server/strings.txt (original)
+++ trunk/server/strings.txt Wed Aug  8 13:23:41 2007
@@ -6929,6 +6929,9 @@
 	DE	Ungültige SqueezeNetwork Mail-Adresse oder Passwort
 	EN	Invalid SqueezeNetwork email address or password.
 
+SETUP_SN_VALID_LOGIN
+	EN	Connected successfully to SqueezeNetwork.
+
 SETUP_SN_SYNC
 	EN	SqueezeNetwork Integration
 
@@ -6965,6 +6968,9 @@
 SETUP_WIZARD_SQN_DESC
 	EN	SqueezeNetwork allows you to get the most out of your new Logitech digital music player. Some of the advanced online media services such as Rhapsody or Pandora are only available through SqueezeNetwork.<br/><br/>If you haven't subscribed to SqueezeNetwork yet, please visit <a href="http://www.squeezenetwork.com" target="_blank">http://www.squeezenetwork.com</a>.<br/><br/>Please enter the email address and password used to login to your SqueezeNetwork account.
 
+SETUP_WIZARD_SQN_VERIFY
+	EN	Verify
+
 SETUP_WIZARD_SOURCE
 	EN	SlimServer Setup: Music Source
 
@@ -6986,12 +6992,6 @@
 SETUP_WIZARD_AUDIODIR_DESC
 	EN	Please select the path to your local music collection.
 
-SETUP_WIZARD_PLAYLISTDIR
-	EN	SlimServer Setup: Playlist Folder
-
-SETUP_WIZARD_PLAYLISTDIR_DESC
-	EN	Please select the path to your playlist folder.
-
 SETUP_WIZARD_ITUNES
 	EN	SlimServer Setup: iTunes Integration
 
@@ -7008,7 +7008,7 @@
 	EN	SlimServer Setup: Summary
 
 SETUP_WIZARD_SUMMARY_DESC
-	EN	Here's a summary of your settings...
+	EN	You're finished setting up your SlimServer.<br>If you selected a local music source, SlimServer will now start indexing your collection. Have fun! blah, blah...
 
 SETUP_WIZARD_NEXT
 	DE	Weiter



More information about the checkins mailing list