[Slim-Checkins] r12496 - in /trunk/server: HTML/EN/html/fileselector.js HTML/EN/html/wizard.js HTML/EN/settings/server/fileselector.html HTML/EN/settings/server/wizard.html Slim/Web/Settings/Server/Wizard.pm
mherger at svn.slimdevices.com
mherger at svn.slimdevices.com
Mon Aug 6 09:33:44 PDT 2007
Author: mherger
Date: Mon Aug 6 09:33:43 2007
New Revision: 12496
URL: http://svn.slimdevices.com?rev=12496&view=rev
Log:
Bug: n/a
Description:
- file/folderselector rewrite
- add selector box to wizard
Modified:
trunk/server/HTML/EN/html/fileselector.js
trunk/server/HTML/EN/html/wizard.js
trunk/server/HTML/EN/settings/server/fileselector.html
trunk/server/HTML/EN/settings/server/wizard.html
trunk/server/Slim/Web/Settings/Server/Wizard.pm
Modified: trunk/server/HTML/EN/html/fileselector.js
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/html/fileselector.js?rev=12496&r1=12495&r2=12496&view=diff
==============================================================================
--- trunk/server/HTML/EN/html/fileselector.js (original)
+++ trunk/server/HTML/EN/html/fileselector.js Mon Aug 6 09:33:43 2007
@@ -1,93 +1,126 @@
-var tree;
+FileTreeLoader = function(filter) {
+ this.filter = filter;
+ FileTreeLoader.superclass.constructor.call(this);
+};
-FileTree = function(){
- return {
- init: function() {
- tree = new Ext.tree.TreePanel('fileselector', {
- rootVisible:false,
- animate: false,
- pathSeparator: '|',
-
- loader: new Ext.tree.TreeLoader({
- dataUrl:'/jsonrpc.js',
-
- getParams: function(node){
- var cliQuery = [
- 'filesystem',
- 0,
- 99999
- ];
-
- 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);
- }
- }
- }),
- 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);
+Ext.extend(FileTreeLoader, Ext.tree.TreeLoader, {
+ dataUrl:'/jsonrpc.js',
+
+ getParams: function(node){
+ var cliQuery = [
+ 'filesystem',
+ 0,
+ 99999
+ ];
+
+ cliQuery.push("folder:" + node.id);
+
+ if (this.filter) {
+ cliQuery.push("filter:" + this.filter);
}
- };
-}();
+
+ 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);
+ }
+ }
+});
+
+FileSelector = function(container, config){
+ Ext.apply(this, config);
+ FileSelector.superclass.constructor.call(this, container);
+
+ this.loader = new FileTreeLoader(this.filter);
+
+ // set the root node
+ var root = new Ext.tree.AsyncTreeNode({
+ text: 'root'
+ });
+ this.setRootNode(root);
+
+ this.on('click', this.onclick);
+
+ // render the tree
+ this.render();
+
+ // select the current setting, if available
+ input = Ext.get(this.input);
+ if (input != null && input.dom.value != null) {
+ path = input.dom.value.split('/');
+ prev = '';
+ target = '|' + root.id;
+ for (x=1; x<path.length; x++) {
+ prev += '/' + path[x];
+ target += '|' + prev;
+ }
+ this.selectPath(target);
+ }
+
+};
+
+
+Ext.extend(FileSelector, Ext.tree.TreePanel, {
+ rootVisible: false,
+ animate: false,
+ pathSeparator: '|',
+ containerScroll: true,
+
+ onclick: function(node, e){
+ input = Ext.get(this.input);
+ if (input != null && input.dom.value != null) {
+ input.dom.value = node.id;
+ }
+ else alert(this.input);
+ }
+});
+
+
Modified: trunk/server/HTML/EN/html/wizard.js
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/html/wizard.js?rev=12496&r1=12495&r2=12496&view=diff
==============================================================================
--- trunk/server/HTML/EN/html/wizard.js (original)
+++ trunk/server/HTML/EN/html/wizard.js Mon Aug 6 09:33:43 2007
@@ -81,6 +81,7 @@
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);
Modified: trunk/server/HTML/EN/settings/server/fileselector.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/settings/server/fileselector.html?rev=12496&r1=12495&r2=12496&view=diff
==============================================================================
--- trunk/server/HTML/EN/settings/server/fileselector.html (original)
+++ trunk/server/HTML/EN/settings/server/fileselector.html Mon Aug 6 09:33:43 2007
@@ -13,8 +13,8 @@
<script type="text/javascript">
function getSelected() {
- var selected = tree.getSelectionModel().getSelectedNode();
-
+// var selected = FileTree.tree.getSelectionModel().getSelectedNode();
+selected = Ext.get('audiodir');
if (selected != null && selected.id) {
alert("[% "SETUP_OK_USING" | string %]\n" + selected.id);
}
@@ -25,7 +25,6 @@
var audiodir = "[% audiodir %]";
- Ext.onReady(FileTree.init, FileTree, false);
</script>
<style type="text/css">
@@ -39,7 +38,13 @@
<body>
<div id="fileselector" style="overflow:auto; height:300px; width:400px;"></div>
-
+ <input type="text" name="audiodir" id="audiodir" value="[% audiodir %]" size="80">
<input type="button" name="show" value="Ok" onclick="getSelected();">
</body>
+ <script type="text/javascript">
+ new FileSelector('fileselector', {
+ filter: 'foldersonly',
+ input: 'audiodir'
+ });
+ </script>
</html>
Modified: trunk/server/HTML/EN/settings/server/wizard.html
URL: http://svn.slimdevices.com/trunk/server/HTML/EN/settings/server/wizard.html?rev=12496&r1=12495&r2=12496&view=diff
==============================================================================
--- trunk/server/HTML/EN/settings/server/wizard.html (original)
+++ trunk/server/HTML/EN/settings/server/wizard.html Mon Aug 6 09:33:43 2007
@@ -27,6 +27,23 @@
var showproxy = [% showProxy %];
var audiodir_tree = "[% audiodir_tree %]";
var showitunes = [% showiTunes ? 1 : 0 %];
+
+ Ext.onReady(function(){
+ new FileSelector('audiodirselector', {
+ filter: 'foldersonly',
+ input: 'audiodir'
+ });
+
+ new FileSelector('playlistdirselector', {
+ filter: 'foldersonly',
+ input: 'playlistdir'
+ });
+
+ new FileSelector('itunespathselector', {
+ filter: 'foldersonly',
+ input: '.xml'
+ });
+ });
</script>
<script type="text/javascript" src="/html/fileselector.js"></script>
@@ -72,6 +89,13 @@
.page {
position: absolute;
+ }
+
+ .folderselector {
+ overflow:scroll;
+ height:300px;
+ width:400px;
+ border: 1px black solid;
}
-->
</style>
@@ -153,20 +177,20 @@
<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 id="audiodirselector" class="folderselector"></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="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 id="playlistdirselector" class="folderselector"></div>
+ <div><input type="text" name="playlistdir" id="playlistdir" value="[% prefs.playlistdir %]" class="stdedit" size="50"></div>
</div>
<div id="itunes_m" class="page">
<div>[% "SETUP_WIZARD_ITUNES_DESC" | string %]</div>
+ <div id="itunespathselector" class="folderselector"></div>
+ <div><input type="text" name="xml_path" id="xml_path" value="[% prefs.xml_path %]" class="stdedit" size="50"></div>
</div>
<div id="musicip_m" class="page">
Modified: trunk/server/Slim/Web/Settings/Server/Wizard.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Settings/Server/Wizard.pm?rev=12496&r1=12495&r2=12496&view=diff
==============================================================================
--- trunk/server/Slim/Web/Settings/Server/Wizard.pm (original)
+++ trunk/server/Slim/Web/Settings/Server/Wizard.pm Mon Aug 6 09:33:43 2007
@@ -55,7 +55,7 @@
# Cleanup the checkbox
if ($pref =~ /itunes|musicmagic/) {
- $paramRef->{$pref} = defined $paramRef->{$pref} ? 1 : 0;
+ $paramRef->{'prefs'}->{$pref} = defined $paramRef->{'prefs'}->{$pref} ? 1 : 0;
}
}
}
More information about the checkins
mailing list