[Slim-Checkins] r12492 - in /trunk/server: ./ HTML/EN/html/ HTML/EN/settings/server/ Slim/Utils/ Slim/Web/Settings/Server/
mherger at svn.slimdevices.com
mherger at svn.slimdevices.com
Mon Aug 6 05:38:33 PDT 2007
Author: mherger
Date: Mon Aug 6 05:38:32 2007
New Revision: 12492
URL: http://svn.slimdevices.com?rev=12492&view=rev
Log:
Bug: n/a
Description: first checkpoint for slimserver setup wizard; lots to do...
- strings to be completed by marketing(?)
- layout
- verification
- conditional pages
Added:
trunk/server/HTML/EN/html/wizard.js
trunk/server/HTML/EN/settings/server/wizard.html
trunk/server/Slim/Web/Settings/Server/Wizard.pm
Modified:
trunk/server/HTML/EN/html/fileselector.js
trunk/server/HTML/EN/settings/server/fileselector.html
trunk/server/Slim/Utils/Filesystem.pm
trunk/server/Slim/Web/Settings/Server/FileSelector.pm
trunk/server/strings.txt
Modified: trunk/server/HTML/EN/html/fileselector.js
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/html/fileselector.js?rev=12492&r1=12491&r2=12492&view=diff
==============================================================================
--- trunk/server/HTML/EN/html/fileselector.js (original)
+++ trunk/server/HTML/EN/html/fileselector.js Mon Aug 6 05:38:32 2007
@@ -1,86 +1,93 @@
var tree;
-Ext.onReady(function(){
- tree = new Ext.tree.TreePanel('fileselector', {
- rootVisible:false,
- animate: false,
- loader: new Ext.tree.TreeLoader({
- dataUrl:'/jsonrpc.js',
-
- getParams: function(node){
- var cliQuery = [
- 'filesystem',
- 0,
- 99999
- ];
-
- cliQuery.push("folder:" + node.id);
+FileTree = function(){
+ return {
+ init: function() {
+ tree = new Ext.tree.TreePanel('fileselector', {
+ rootVisible:false,
+ animate: false,
+ pathSeparator: '|',
- return Ext.util.JSON.encode({
- id: 1,
- method: "slim.request",
- params: [
- "",
- cliQuery
- ]
- });
- },
+ loader: new Ext.tree.TreeLoader({
+ dataUrl:'/jsonrpc.js',
- createNode : function(attr){
- if(this.applyLoader !== false){
- attr.loader = this;
- }
- if(typeof attr.uiProvider == 'string'){
- attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
- }
- return ((attr.isfolder > 0) ?
- new Ext.tree.AsyncTreeNode({
- id: attr.path,
- text: attr.name,
- iconCls: 'x-tree-node-alwayscollapsed'
- }) :
+ getParams: function(node){
+ var cliQuery = [
+ 'filesystem',
+ 0,
+ 99999
+ ];
- new Ext.tree.TreeNode({
- id: attr.path,
- text: attr.name,
- leaf: true
- }));
- },
-
- processResponse : function(response, node, callback){
- var json = response.responseText;
- try {
- var o = eval("("+json+")");
-
- // we have to extract the result as IE/Opera can't handle multi-node data roots
- o = eval('o.result');
- len = o.count;
- o = eval('o.fsitems_loop');
-
- for(var i = 0; i < len; i++){
- var n = this.createNode(o[i]);
- if(n){
- node.appendChild(n);
+ cliQuery.push("folder:" + node.id);
+
+ return Ext.util.JSON.encode({
+ id: 1,
+ method: "slim.request",
+ params: [
+ "",
+ cliQuery
+ ]
+ });
+ },
+
+ createNode : function(attr){
+ if(this.applyLoader !== false){
+ attr.loader = this;
+ }
+ if(typeof attr.uiProvider == 'string'){
+ attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
+ }
+ return ((attr.isfolder > 0) ?
+ new Ext.tree.AsyncTreeNode({
+ id: attr.path,
+ text: attr.name,
+ iconCls: 'x-tree-node-alwayscollapsed'
+ }) :
+
+ new Ext.tree.TreeNode({
+ id: attr.path,
+ text: attr.name,
+ leaf: true
+ }));
+ },
+
+ processResponse : function(response, node, callback){
+ var json = response.responseText;
+ try {
+ var o = eval("("+json+")");
+
+ // we have to extract the result as IE/Opera can't handle multi-node data roots
+ o = eval('o.result');
+ len = o.count;
+ o = eval('o.fsitems_loop');
+
+ for(var i = 0; i < len; i++){
+ var n = this.createNode(o[i]);
+ if(n){
+ node.appendChild(n);
+ }
+ }
+ if(typeof callback == "function"){
+ callback(this, node);
+ }
+ } catch(e){
+ this.handleFailure(response);
}
}
- if(typeof callback == "function"){
- callback(this, node);
- }
- } catch(e){
- this.handleFailure(response);
- }
- }
- }),
- containerScroll: true
- });
-
- // set the root node
- var root = new Ext.tree.AsyncTreeNode({
- text: 'root'
- });
- tree.setRootNode(root);
-
- // render the tree
- tree.render();
- root.expand();
-});
+ }),
+ containerScroll: true
+ });
+
+ // set the root node
+ var root = new Ext.tree.AsyncTreeNode({
+ text: 'root'
+ });
+ tree.setRootNode(root);
+
+ // render the tree
+ tree.render();
+ root.expand();
+ tree.selectPath('|' + tree.root.id + audiodir_tree);
+ }
+ };
+}();
Added: trunk/server/HTML/EN/html/wizard.js
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/html/wizard.js?rev=12492&view=auto
==============================================================================
--- trunk/server/HTML/EN/html/wizard.js (added)
+++ trunk/server/HTML/EN/html/wizard.js Mon Aug 6 05:38:32 2007
@@ -1,0 +1,98 @@
+Wizard = function(){
+ // we do not always show the language selection page
+ page = firstpage;
+ pages = new Array('welcome', 'proxy', 'sqn', 'source', 'audiodir', 'playlistdir', 'itunes', 'musicip', 'summary');
+
+ return {
+ init : function(){
+ var layout = new Ext.BorderLayout(document.body, {
+ north: {
+ split:false,
+ initialSize: 35
+ },
+ south: {
+ split:false,
+ initialSize: 20
+ },
+ west: {
+ split:false,
+ initialSize: 200,
+ collapsible: false
+ },
+ center: {
+ autoScroll: true
+ }
+ });
+
+ layout.beginUpdate();
+ layout.add('north', new Ext.ContentPanel('header', {fitToFrame:true}));
+ 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);
+
+ 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);
+ },
+
+ 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);
+ },
+
+ onPrevious : function(){
+ switch (pages[page]) {
+ // don't display proxy page, except if showproxy is set
+ case 'sqn' :
+ page -= 2 - showproxy
+ break;
+ default:
+ page--;
+ break;
+ }
+
+ page = Math.max(page, firstpage);
+ flipPages(page);
+ },
+
+ onFinish : function(){
+ document.forms.wizardForm.submit();
+// window.close();
+ },
+
+ onLanguageChange : function(){
+ document.forms.languageForm.submit();
+ }
+ };
+}();
+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);
+ }
+ }
+
+ // update buttons
+ if (newPage == pages.length-1) {
+ }
+}
+
Modified: trunk/server/HTML/EN/settings/server/fileselector.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/settings/server/fileselector.html?rev=12492&r1=12491&r2=12492&view=diff
==============================================================================
--- trunk/server/HTML/EN/settings/server/fileselector.html (original)
+++ trunk/server/HTML/EN/settings/server/fileselector.html Mon Aug 6 05:38:32 2007
@@ -8,7 +8,25 @@
<link rel="stylesheet" type="text/css" href="/html/ext/resources/css/xtheme-gray.css" />
<script type="text/javascript" src="/html/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="/html/ext/ext-all.js"></script>
+
<script type="text/javascript" src="/html/fileselector.js"></script>
+
+ <script type="text/javascript">
+ function getSelected() {
+ var selected = tree.getSelectionModel().getSelectedNode();
+
+ if (selected != null && selected.id) {
+ alert("[% "SETUP_OK_USING" | string %]\n" + selected.id);
+ }
+ else {
+ alert("nothing selected");
+ }
+ }
+
+ var audiodir = "[% audiodir %]";
+
+ Ext.onReady(FileTree.init, FileTree, false);
+ </script>
<style type="text/css">
<!--
@@ -18,20 +36,9 @@
-->
</style>
</head>
+
<body>
<div id="fileselector" style="overflow:auto; height:300px; width:400px;"></div>
-
- <script type="text/javascript">
- function getSelected() {
- var selected = tree.getSelectionModel().getSelectedNode();
- if (selected != null && selected.id) {
- alert("[% "SETUP_OK_USING" | string %]\n" + selected.id);
- }
- else {
- alert("nothing selected");
- }
- }
- </script>
<input type="button" name="show" value="Ok" onclick="getSelected();">
</body>
Added: trunk/server/HTML/EN/settings/server/wizard.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/settings/server/wizard.html?rev=12492&view=auto
==============================================================================
--- trunk/server/HTML/EN/settings/server/wizard.html (added)
+++ trunk/server/HTML/EN/settings/server/wizard.html Mon Aug 6 05:38:32 2007
@@ -1,0 +1,191 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <title>[% SLIMSERVER | string %]</title>
+
+ <link rel="stylesheet" href="[% webroot %]slimserver.css" type="text/css">
+ <link rel="stylesheet" href="[% webroot %]skin.css" type="text/css">
+ <link rel="stylesheet" type="text/css" href="/html/ext/resources/css/ext-all.css" />
+ <link rel="stylesheet" type="text/css" href="/html/ext/resources/css/xtheme-gray.css" />
+ <script type="text/javascript" src="/html/ext/adapter/ext/ext-base.js"></script>
+ <script type="text/javascript" src="/html/ext/ext-all.js"></script>
+
+ <script type="text/javascript">
+ function getSelected() {
+ var selected = tree.getSelectionModel().getSelectedNode();
+
+ if (selected != null && selected.id) {
+ alert("[% "SETUP_OK_USING" | string %]\n" + selected.id);
+ }
+ else {
+ alert("nothing selected");
+ }
+ }
+
+ var firstpage = [% showLanguage ? 1 : 0 %];
+ var showproxy = [% showProxy %];
+ var audiodir_tree = "[% audiodir_tree %]";
+ var showitunes = [% showiTunes ? 1 : 0 %];
+ </script>
+
+ <script type="text/javascript" src="/html/fileselector.js"></script>
+ <script type="text/javascript" src="/html/wizard.js"></script>
+
+ <style type="text/css">
+ <!--
+ .x-tree-node-leaf .x-tree-node-alwayscollapsed {
+ background-image:url(/html/ext/resources/images/default/tree/folder.gif);
+ }
+
+ html, body {
+ margin:0;
+ padding:0;
+ border:0 none;
+ overflow:hidden;
+ height:100%;
+ }
+
+ #header{
+ background: #dddddd;
+ padding:5px 4px;
+ }
+
+ #footer{
+ background: #dddddd;
+ padding:2px 4px;
+ color:white;
+ text-align: right;
+ }
+
+ #west {
+ background: #dddddd;
+ }
+
+ #main p {
+ margin:5px;
+ }
+
+ .x-layout-panel {
+ border: 0px none;
+ }
+
+ .page {
+ position: absolute;
+ }
+ -->
+ </style>
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="welcome_h" class="page">[% "SETUP_WIZARD_WELCOME" | string %]</div>
+ <div id="proxy_h" class="page">[% "SETUP_WIZARD_PROXY" | string %]</div>
+ <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>
+ </div>
+
+ <div id="west">
+ Some nice picture here...
+ </div>
+
+ <div id="main" class="prefDesc">
+ <div id="welcome_m" class="page">
+ <form name="languageForm" id="languageForm" method="post" action="[% webroot %][% path %]">
+ <div>[% "SETUP_WIZARD_WELCOME_DESC" | string %]</div>
+ <div>
+ [% "CHOOSE_A_LANGUAGE" | string %]
+ <select class="stdedit" name="language" id="language">
+
+ [% FOREACH option = languageoptions %]
+ <option [% IF prefs.language == option.key %]selected="selected" [% END %]value="[% option.key %]">[% option.value %]</option>
+ [%- END -%]
+
+ </select>
+ </div>
+ <input name="saveSettings" type="hidden" value="1">
+ </form>
+ </div>
+
+ <form name="wizardForm" id="wizardForm" method="post" action="[% webroot %][% path %]">
+ <div id="proxy_m" class="page">
+ <div>[% "SETUP_WIZARD_PROXY_DESC" | string %]</div>
+ <div>[% "SETUP_WEBPROXY_CHOOSE" | string %][% "COLON" | string %] <input type="text" name="webproxy" value="[% prefs.webproxy %]"></div>
+ </div>
+
+ <div id="sqn_m" class="page">
+ <div>[% "SETUP_WIZARD_SQN_DESC" | string %]</div>
+
+ <div><table>
+ <tr>
+ <td>[% "SETUP_SN_EMAIL" | string %][% "COLON" | string %]</td>
+ <td><input type="text" class="stdedit" name="sn_email" id="sn_email" value="[% prefs.sn_email %]" size="40"></td>
+ </tr>
+ <tr>
+ <td>[% "SETUP_SN_PASSWORD" | string %][% "COLON" | string %] </td>
+ <td><input type="password" class="stdedit" name="sn_password" id="sn_password" value="[% prefs.sn_password %]" size="40"></td>
+ </tr>
+ </table></div>
+ </div>
+
+ <div id="source_m" class="page">
+ <div>[% "SETUP_WIZARD_SOURCE_DESC" | string %]</div>
+ <div><table>
+ <tr>
+ <td><input type="checkbox" name="useAudiodir" id="useAudiodir" [% IF prefs.audiodir %]checked [% END %] class="stdedit"> </td>
+ <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>[% "SETUP_WIZARD_SOURCE_ITUNES" | string %]</td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" [% IF prefs.musicmagic %]checked [% END %] value="1" class="stdedit"></td>
+ <td>[% "SETUP_WIZARD_SOURCE_MUSICIP" | string %]</td>
+ </tr>
+ </table></div>
+ </div>
+
+ <div id="audiodir_m" class="page">
+ <div>[% "SETUP_WIZARD_AUDIODIR_DESC" | string %]</div>
+ <div id="fileselector" style="overflow:auto; height:300px; width:400px;"></div>
+ <div><input type="text" name="audiodir" value="[% prefs.audiodir %]" class="stdedit"></div>
+ <input type="button" name="show" value="Ok" onclick="getSelected();" class="stdedit">
+ </div>
+
+ <div id="playlistdir_m" class="page">
+ <div>[% "SETUP_WIZARD_PLAYLISTDIR_DESC" | string %]</div>
+ <div id="fileselector" style="overflow:auto; height:300px; width:400px;"></div>
+ <div><input type="text" name="playlistdir" value="[% prefs.playlistdir %]" class="stdedit"></div>
+ <input type="button" name="show" value="Ok" onclick="getSelected();" class="stdedit">
+ </div>
+
+ <div id="itunes_m" class="page">
+ <div>[% "SETUP_WIZARD_ITUNES_DESC" | string %]</div>
+ </div>
+
+ <div id="musicip_m" class="page">
+ <div>[% "SETUP_WIZARD_MUSICIP_DESC" | string %]</div>
+ </div>
+
+ <div id="summary_m" class="page">
+ <div>[% "SETUP_WIZARD_SUMMARY_DESC" | string %]</div>
+ </div>
+
+ <input name="saveSettings" type="hidden" value="1">
+ </form>
+ </div>
+
+ <div id="footer">
+ <input type="button" id="previous" value="[% "SETUP_WIZARD_PREVIOUS" | string %]"/>
+ <input type="button" id="next" value="[% "SETUP_WIZARD_NEXT" | string %]"/>
+ <input type="button" id="finish" value="[% "SETUP_WIZARD_FINISH" | string %]"/>
+ </div>
+
+ </body>
+</html>
Modified: trunk/server/Slim/Utils/Filesystem.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Utils/Filesystem.pm?rev=12492&r1=12491&r2=12492&view=diff
==============================================================================
--- trunk/server/Slim/Utils/Filesystem.pm (original)
+++ trunk/server/Slim/Utils/Filesystem.pm Mon Aug 6 05:38:32 2007
@@ -66,6 +66,9 @@
}
}
+ # don't show dot files (TODO: make this optional?)
+ @subdirs = grep { $_ !~ m|/\.| } @subdirs;
+
if (ref $filter eq 'CODE') {
@subdirs = grep { &$filter } @subdirs;
}
Modified: trunk/server/Slim/Web/Settings/Server/FileSelector.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Settings/Server/FileSelector.pm?rev=12492&r1=12491&r2=12492&view=diff
==============================================================================
--- trunk/server/Slim/Web/Settings/Server/FileSelector.pm (original)
+++ trunk/server/Slim/Web/Settings/Server/FileSelector.pm Mon Aug 6 05:38:32 2007
@@ -31,7 +31,15 @@
sub handler {
my ($class, $client, $paramRef, $pageSetup) = @_;
- $paramRef->{'folders'} = Slim::Utils::Filesystem::getChildren($paramRef->{'currDir'}, $paramRef->{'foldersonly'} ? sub { -d } : undef);
+ $paramRef->{'audiodir'} = '';
+
+ my $prev = '';
+ foreach (split /\//, preferences('server')->get('audiodir')) {
+ if ($_) {
+ $prev .= "/$_";
+ $paramRef->{'audiodir'} .= '|' . $prev;
+ }
+ }
return Slim::Web::HTTP::filltemplatefile($class->page, $paramRef);
}
Added: trunk/server/Slim/Web/Settings/Server/Wizard.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Settings/Server/Wizard.pm?rev=12492&view=auto
==============================================================================
--- trunk/server/Slim/Web/Settings/Server/Wizard.pm (added)
+++ trunk/server/Slim/Web/Settings/Server/Wizard.pm Mon Aug 6 05:38:32 2007
@@ -1,0 +1,98 @@
+package Slim::Web::Settings::Server::Wizard;
+
+# SlimServer Copyright (c) 2001-2007 Logitech.
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License,
+# version 2.
+
+use strict;
+use base qw(Slim::Web::Settings);
+
+use Slim::Utils::Log;
+use Slim::Utils::Prefs;
+use Slim::Utils::Filesystem;
+
+my $showProxy = 1;
+my $prefs = preferences('server');
+
+my %prefs = (
+ 'server' => ['language', 'weproxy', 'sn_email', 'sn_password', 'audiodir', 'playlistdir'],
+ 'plugin.itunes' => ['itunes', 'xml_path'],
+ 'plugin.musicmagic' => ['musicmagic', 'port']
+);
+
+sub new {
+ my $class = shift;
+
+ # 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);
+ $http->get('http://www.squeezenetwork.com/');
+
+ $class->SUPER::new($class);
+}
+
+sub page {
+ return 'settings/server/wizard.html';
+}
+
+sub handler {
+ my ($class, $client, $paramRef, $pageSetup) = @_;
+
+ # don't display the language selection when run for the first time on Windows,
+ # as this should have been set by the Windows installer
+ if (Slim::Utils::OSDetect::OS() eq 'win' && not $prefs->get('wizarddone')) {
+ $paramRef->{'showLanguage'} = 1;
+ }
+
+ foreach my $namespace (keys %prefs) {
+ foreach my $pref (@{$prefs{$namespace}}) {
+ if ($paramRef->{'saveSettings'}) {
+ my (undef, $ok) = preferences($namespace)->set($pref, $paramRef->{$pref});
+ }
+
+ $paramRef->{'prefs'}->{$pref} = preferences($namespace)->get($pref);
+
+ # Cleanup the checkbox
+ if ($pref =~ /itunes|musicmagic/) {
+ $paramRef->{$pref} = defined $paramRef->{$pref} ? 1 : 0;
+ }
+ }
+ }
+
+ # build the tree for the currently set music path
+ # The tree control is expecting something like
+ # |/|/home|/home/myself|/home/myself/music
+ my $prev = '';
+ foreach (split /\//, $prefs->get('audiodir')) {
+ if ($_) {
+ $prev .= "/$_";
+ $paramRef->{'audiodir_tree'} .= '|' . $prev;
+ }
+ }
+
+ $paramRef->{'showiTunes'} = (preferences('plugin.itunes')->get('xml_file') || Slim::Plugin::iTunes::Common->canUseiTunesLibrary() == undef);
+ $paramRef->{'showProxy'} = $showProxy;
+ $paramRef->{'languageoptions'} = Slim::Utils::Strings::languageOptions();
+
+ 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=12492&r1=12491&r2=12492&view=diff
==============================================================================
--- trunk/server/strings.txt (original)
+++ trunk/server/strings.txt Mon Aug 6 05:38:32 2007
@@ -6944,6 +6944,84 @@
DE Inaktiv, Player-Einstellungen nicht synchronisieren
EN Disabled, do not keep player settings in sync.
+SETUP_WIZARD_LANG_DESC
+ EN If you want to change the language, select it here:
+
+SETUP_WIZARD_WELCOME
+ EN Welcome to the SlimServer Setup wizard
+
+SETUP_WIZARD_WELCOME_DESC
+ EN Thank you for buying a Logitech digital music player! We're sure you'll enjoy it a lot...<br><br>This wizard will guide you through the necessary steps to get your SlimServer and music player up and running.<br>Some more blah, blah...
+
+SETUP_WIZARD_PROXY
+ EN SlimServer Setup: Proxy Settings
+
+SETUP_WIZARD_PROXY_DESC
+ EN SlimServer wasn't able to connect to the web. <br/>If your network is protected by a web proxy, then you can specify the IP address and port for the proxy to use when SlimServer connects to servers outside your local network. Use the format xx.xx.xx.xx:yyyy where xx.xx.xx.xx is the IP address of the proxy, and yyyy is the port number. Leave this field blank if you don't use a HTTP web proxy.
+
+SETUP_WIZARD_SQN
+ EN SlimServer Setup: SqueezeNetwork Account
+
+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_SOURCE
+ EN SlimServer Setup: Music Source
+
+SETUP_WIZARD_SOURCE_DESC
+ EN Please select your local music source.
+
+SETUP_WIZARD_SOURCE_AUDIODIR
+ EN <em>Music Folder<em><br/>SlimServer can access music files stored on your computer or another computer in your local network, such as eg. a network attached storage (NAS).
+
+SETUP_WIZARD_SOURCE_ITUNES
+ EN <em>iTunes<em><br/>SlimServer can use your iTunes music library and playlists. Any changes that you make in iTunes will be reflected on your player. For more information about iTunes please visit <a href="http://www.apple.com/itunes" target="_blank">http://www.apple.com/itunes</a>.
+
+SETUP_WIZARD_SOURCE_MUSICIP
+ EN <em>MusicIP Integration</em><br/>SlimServer can use MusicIP as your source for title and genre information. Additionally MusicIP allows you to generate mixes based on genre, artist and songs. For more information about MusicIP please visit <a href="http://www.musicip.com/mixer/" target="_blank">http://www.musicip.com</a>
+
+SETUP_WIZARD_AUDIODIR
+ EN SlimServer Setup: Local Music Folder
+
+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
+
+SETUP_WIZARD_ITUNES_DESC
+ EN Please select your iTunes XML file...
+
+SETUP_WIZARD_MUSICIP
+ EN SlimServer Setup: MusicIP Integration
+
+SETUP_WIZARD_MUSICIP_DESC
+ EN Please select your MusicIP settings...
+
+SETUP_WIZARD_SUMMARY
+ EN SlimServer Setup: Summary
+
+SETUP_WIZARD_SUMMARY_DESC
+ EN Here's a summary of your settings...
+
+SETUP_WIZARD_NEXT
+ DE Weiter
+ EN Next
+
+SETUP_WIZARD_PREVIOUS
+ DE Zurück
+ EN Previous
+
+SETUP_WIZARD_FINISH
+ DE Abschliessen
+ EN Finish
+
#
# Web interface
#
More information about the checkins
mailing list