/**
* ownCloud - Files Tree
*
* @author Bastien Ho (EELV - Urbancube)
* @copyleft 2012 bastienho@urbancube.fr
* @projeturl http://ecolosites.eelv.fr/files-tree
*
* Free Software under creative commons licence
* http://creativecommons.org/licenses/by-nc/3.0/
* Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0)
*
* You are free:
* to Share — to copy, distribute and transmit the work
* to Remix — to adapt the work
*
* Under the following conditions:
* Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that
* suggests that they endorse you or your use of the work).
* Noncommercial — You may not use this work for commercial purposes.
*
*/
function FileTree(){
tree=this;
$('#fileTable').css('width','86%');
$('#emptyfolder').css('margin-left','20%');
$('#content').prepend('
'+t('files_tree','Loading')+'
');
$('#files_tree_switcher').click(function(){tree.toggle()});
$('#dir_browser').css('width',$('#files_tree').width()-25).css('height',$('#files_tree').height()-40);
tree.browse('','');
$('#files_tree_refresh').css('background-image', 'url('+OC.imagePath('files_tree', 'refresh.svg')+')').click(function(){
$('#dir_browser').html(''+t('files_tree','Resfreshing files tree')+'');
tree.browse('','&refresh=1');
});
tree.sync();
}
FileTree.prototype={
toggle:function(){
if($('#files_tree').width()==10){
$('#fileList').parent().animate({width:'85%'},500);
$('#files_tree').animate({width:'14%'},500);
}
else{
$('#files_tree').animate({width:10},500);
$('#fileList').parent().animate({width:$('#content').width()-11},500);
}
},
sync:function(){
if($('#fileList').parent().css('display')=='none'){
$('#files_tree').css('display','none');
}
else{
$('#files_tree').css('display','block');
}
$('#files_tree').css('height',Math.max($('#content').outerHeight(),$('#fileList').parent().outerHeight()+38));
$('#dir_browser').css('width',$('#files_tree').width()-25).css('height',$('#files_tree').outerHeight()-38);
setTimeout('tree.sync()',2000);
},
browse:function(dir,refresh){
$.ajax({
type: 'POST',
url:'./?app=files_tree&getfile=ajax/explore.php&dir='+dir+refresh,
dataType: 'json',
async: true,
success: function (k) {
$('#dir_browser').html(k.list);
$('#dir_browser ul').attr('class','collapsed');
var stats = k.stat;
if(k.stat){
for(var f in k.stat){
$('#dir_browser ul').filterAttr('data-path',f).attr('class',k.stat[f]);
}
}
$('#dir_browser ul ul li:first-child').click(function(){
tree.toggle_dir($(this).parent());
});
tree.collex();
tree.rescan();
}
});
},
// For AJAX Navigation
browseContent:function(url){
url=url.replace('app_files&dir=','');
var lastModified = new Date();
$("#fileList").fadeOut(500,function(){
$.ajax({
type: 'GET',
url:url,
dataType: 'html',
async: true,
success: function (data) {
$('#dropdown').remove();
document.title = $(data).filter('title').text();
$('#dir').val( $(data).find("#dir").val());
$('#controls .crumb').remove();
var crumb='';
$(data).find("#controls .crumb").each(function(){
crumb+=$(this).wrap('').parent().html();
});
$('#controls').prepend(crumb);
FileList.update($(data).find("#fileList").html());
$('#fileList td.filename').each(function(){
FileActions.display($(this));
});
tree.browse('','');
$("#fileList").fadeIn(500);
}
});
});
},
rescan:function(){
var lechem='';
var la_path = $('#dir').val().split('/');
$('#dir_browser li').css('background-image', 'url('+OC.imagePath('files_tree', 'closed.png')+')');
$('#dir_browser ul.expanded').parent().css('background-image', 'url('+OC.imagePath('files_tree', 'open.png')+')');
for(var ledir in la_path){
le_dir=la_path[ledir];
//if(ledir=='') ledir='/';
if(ledir>0) lechem+='/';
lechem+=le_dir;
$('#dir_browser ul').filterAttr('data-path', lechem).attr('class','expanded');
$('#dir_browser a').filterAttr('data-pathname', lechem).css('font-weight','700');
}
$('#dir_browser a').filterAttr('data-pathname', lechem).parent('li').css('background-image', 'url('+OC.imagePath('files_tree', 'open.png')+')');
$('#dir_browser a,#controls .crumb a, #fileList tr[data-type=dir] a').click(function(event){
event.preventDefault();
location.hash = this.pathname+this.search;
return false;
//$(this).attr('href', top.location.host+top.location.pathname+'#'+$(this).attr('href').replace('?','#'));
});
/*$('#fileList tr').filterAttr('data-type','dir').find('a').each(function(){
$(this).attr('href',$(this).attr('href').replace('?','#'));
});*/
// FOR AJAX NAVIGATION :
},
toggle_dir:function(ul){
ul.toggleClass('expanded').toggleClass('collapsed');
if(ul.attr('class')=='expanded'){
ul.parent('li').css('background-image', 'url('+OC.imagePath('files_tree', 'open.png')+')');
}
else{
ul.parent('li').css('background-image', 'url('+OC.imagePath('files_tree', 'closed.png')+')');
}
tree.collex();
//$(this).parent().;
$.ajax({
type: 'POST',
url: './?app=files_tree&getfile=ajax/save.php&d='+ul.data('path')+'&s='+ul.attr('class'),
dataType: 'html',
async: true,
success: function (k) {
//nothing to do
}
});
},
collex:function(){
$('ul.collapsed').children('li:first-child').stop().attr('class','c');
$('ul.expanded').children('li:first-child').stop().attr('class','o');
}
};
$(document).ready(function(){
if($('#fileList').length>0) {
var the_tree=new FileTree();
// AJAX NAVIGATION
function on_hashchange(event) {
var url = window.location.hash.substring(1);
if (!event || event.type === "DOMContentLoaded")
return;
the_tree.browseContent(url);
}
$(window).bind('hashchange', on_hashchange);
on_hashchange(true);
}
});