%PDF- %PDF-
Direktori : /home/lightco1/www/lightingrepublic.com.au/media/com_files/js/ |
Current File : /home/lightco1/www/lightingrepublic.com.au/media/com_files/js/files.tree.js |
/** * @version $Id$ * @package Nooku_Components * @subpackage Files * @copyright Copyright (C) 2011 - 2012 Timble CVBA and Contributors. (http://www.timble.net). * @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> * @link http://www.nooku.org */ if(!Files) var Files = {}; Files.Tree = new Class({ Extends: MooTreeControl, Implements: [Options], options: { mode: 'folders', title: '', grid: true, onClick: function (){}, onAdopt: function (){}, adopt: null, root: { open: true } }, initialize: function(options) { this.setOptions(options); this.onAdopt = this.options.onAdopt; this.parent(this.options, this.options.root); if (options.adopt) { this.adopt(options.adopt); } if (this.options.title) { this.setTitle(this.options.title); } }, setTitle: function(title) { if (!this.title_element) { this.title_element = new Element('h3').inject(document.id(this.options.div), 'top'); } this.title = title; this.title_element.set('text', title); }, /** * We need to duplicate this because in the latest Mootree noClick argument is removed. */ select: function(node, noClick) { if (!noClick) { this.onClick(node); node.onClick(); // fire click events } if (this.selected === node) return; // already selected if (this.selected) { // deselect previously selected node: this.selected.select(false); this.onSelect(this.selected, false); } // select new node: this.selected = node; node.select(true); this.onSelect(node, true); while (true) { if (!node.parent || node.parent.id == null) { break; } node.parent.toggle(false, true); node = node.parent; } }, adopt: function(id, parentNode) { this.parent(id, parentNode); this.onAdopt(id, parentNode); }, fromUrl: function(url) { var that = this, insertNode = function(item, parent) { var path = parent.data.path ? parent.data.path+'/' : ''; path += item.name; var node = parent.insert({ text: item.name, id: path, data: { path: path, url: '#'+item.path, type: 'folder' } }); node.div.main.setAttribute('title', node.div.text.innerText); if (item.children) { Files.utils.each(item.children, function(item) { insertNode(item, node); }); } return node; }; new Request.JSON({ url: url, method: 'get', onSuccess: function(response) { if (response.total) { Files.utils.each(response.items, function(item) { insertNode(item, that.root); }); } if (Files.app && Files.app.active) { that.selectPath(Files.app.active); } that.onAdopt(that.options.div, that.root); } }).send(); }, selectPath: function(path) { if (path !== undefined) { var node = this.get(path); if (node) { this.select(node, true); } else { this.select(this.root, true); } } } });